ในการทดสอบว่าแถวมีอยู่ในตาราง MySQL หรือไม่ ให้ใช้เงื่อนไข EXISTS เงื่อนไขนี้สามารถใช้ร่วมกับ Subquery ได้ จะคืนค่า TRUE (แสดงเป็น 1) เมื่อแถวมีอยู่ในตาราง มิฉะนั้นจะคืนค่า FALSE (แสดงเป็น 0)
เพื่อความเข้าใจที่ดีขึ้น เราจะสร้างตารางตัวอย่างด้วยคำสั่ง CREATE ก่อน:
mysql> CREATE table ExistsRowDemo -> ( -> ExistId int, -> Name varchar(100) -> ); Query OK, 0 rows affected (0.53 sec)
หลังจากสร้างตารางสำเร็จ ให้เพิ่มข้อมูลตัวอย่างด้วยคำสั่ง INSERT:
mysql> INSERT into ExistsRowDemo values(100,'John'); Query OK, 1 row affected (0.16 sec) mysql> INSERT into ExistsRowDemo values(101,'Bob'); Query OK, 1 row affected (0.17 sec) mysql> INSERT into ExistsRowDemo values(103,'Carol'); Query OK, 1 row affected (0.20 sec) mysql> INSERT into ExistsRowDemo values(104,'David'); Query OK, 1 row affected (0.13 sec)
แสดงข้อมูลทั้งหมดด้วยคำสั่ง SELECT:
mysql> SELECT * from ExistsRowDemo;
ผลลัพธ์:
+---------+-------+ | ExistId | Name | +---------+-------+ | 100 | John | | 101 | Bob | | 103 | Carol | | 104 | David | +---------+-------+ 4 rows in set (0.00 sec)
ไวยากรณ์สำหรับตรวจสอบว่าแถวมีอยู่หรือไม่ โดยใช้ EXISTS:
SELECT EXISTS(SELECT * FROM yourTableName WHERE yourCondition);
กรณีที่ 1: แถวมีอยู่ในตาราง
ทดสอบด้วยเงื่อนไขที่แถวมีอยู่จริง:
mysql> SELECT EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=104);
ผลลัพธ์:
+------------------------------------------------------+ | EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=104)| +------------------------------------------------------+ | 1 | +------------------------------------------------------+ 1 row in set (0.00 sec)
จากผลลัพธ์ ค่า 1 หมายถึง TRUE แสดงว่าแถวมีอยู่จริง
กรณีที่ 2: แถวไม่มีอยู่ในตาราง
ทดสอบด้วยเงื่อนไขที่แถวไม่มีอยู่:
mysql> SELECT EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=105);
ผลลัพธ์:
+------------------------------------------------------+ | EXISTS(SELECT * from ExistsRowDemo WHERE ExistId=105)| +------------------------------------------------------+ | 0 | +------------------------------------------------------+ 1 row in set (0.00 sec)
ค่า 0 หมายถึง FALSE แสดงว่าแถวไม่มีอยู่