คำอธิบาย
ใช้ SELECT 1 FROM table WHERE condition เพื่อตรวจสอบว่ามีข้อมูลตรงเงื่อนไขหรือไม่ คืนค่า 1 ถ้ามี, ไม่คืนอะไรถ้าไม่มี (เร็วกว่า SELECT *)
รูปแบบไวยากรณ์
SELECT 1 FROM yourTableName WHERE yourColumnName = yourValue;
ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง
mysql> create table DemoTable (
StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentName varchar(40),
StudentAge int );
Query OK, 0 rows affected (0.46 sec)
การเพิ่มข้อมูล
mysql> insert into DemoTable(StudentName, StudentAge) values('Chris', 21);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable(StudentName, StudentAge) values('David', 20);
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentName, StudentAge) values('Bob', 22);
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable(StudentName, StudentAge) values('Tom', 19);
Query OK, 1 row affected (0.15 sec)
แสดงข้อมูลทั้งหมด
mysql> select * from DemoTable;
ผลลัพธ์:
+-----------+-------------+------------+ | StudentId | StudentName | StudentAge | +-----------+-------------+------------+ | 1 | Chris | 21 | | 2 | David | 20 | | 3 | Bob | 22 | | 4 | Tom | 19 | +-----------+-------------+------------+ 4 rows in set (0.00 sec)
คิวรี่ตรวจสอบว่ามี 'Bob' อยู่หรือไม่
mysql> select 1 from DemoTable where StudentName = 'Bob';
ผลลัพธ์
+---+ | 1 | +---+ | 1 | +---+ 1 row in set (0.00 sec)
คำอธิบาย
- คืนค่า 1 (ค่าคงที่) ไม่ใช่ข้อมูลจากตาราง
- หากไม่พบ จะคืน Empty set (0 rows)
- เร็วกว่า
SELECT *เพราะไม่ต้องอ่านคอลัมน์อื่น - เหมาะสำหรับ EXISTS Subquery:
WHERE EXISTS (SELECT 1 FROM ...)
การใช้งานใน Application
-- PHP PDO
$stmt = $pdo->prepare("SELECT 1 FROM users WHERE email = ?");
$stmt->execute([$email]);
$exists = $stmt->fetchColumn(); // false หรือ '1'
SELECT 1 vs SELECT COUNT(*)
- SELECT 1: หยุดทันทีที่เจอแถวแรก (LIMIT 1 Implicit)
- SELECT COUNT(*): ต้องนับทุกแถวที่ Match