Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

เราจะทดสอบการมีอยู่ของบันทึกในแบบสอบถามย่อย MySQL ได้อย่างไร


เราสามารถใช้ตัวดำเนินการ MySQL EXIST เพื่อทดสอบการมีอยู่ของเร็กคอร์ดในเคียวรีย่อย กล่าวอีกนัยหนึ่ง เราสามารถพูดได้ว่าตัวดำเนินการ EXIST จะตรวจสอบว่าแบบสอบถามย่อยส่งคืนแถวใดๆ หรือไม่ ไวยากรณ์ของการใช้ตัวดำเนินการ EXIST กับแบบสอบถามย่อย MySQL มีดังนี้ -

ไวยากรณ์

WHERE EXISTS (Subquery)

นิพจน์ EXIST (ข้อความค้นหาย่อย) ด้านบนจะคืนค่า TRUE หากข้อความค้นหาย่อยส่งคืนอย่างน้อยหนึ่งแถว มิฉะนั้นจะคืนค่าเป็นเท็จ

ตัวอย่าง

เพื่อให้เข้าใจว่าเรากำลังใช้ข้อมูลจากตารางต่อไปนี้ -

mysql> Select * from Customers;
+-------------+----------+
| Customer_Id | Name     |
+-------------+----------+
| 1           | Rahul    |
| 2           | Yashpal  |
| 3           | Gaurav   |
| 4           | Virender |
+-------------+----------+
4 rows in set (0.00 sec)

mysql> Select * from Reservations;
+------+-------------+------------+
| ID | Customer_id | Day |
+------+-------------+------------+
| 1 | 1 | 2017-12-30 |
| 2 | 2 | 2017-12-28 |
| 3 | 2 | 2017-12-29 |
| 4 | 1 | 2017-12-25 |
| 5 | 3 | 2017-12-26 |
+------+-------------+------------+
5 rows in set (0.00 sec)

ต่อไปนี้คือแบบสอบถามย่อย MySQL ที่มี EXIST โดยใช้ตารางที่กล่าวถึงข้างต้น -

mysql> Select Name from customers WHERE EXISTS (SELECT * FROM Reservations WHERE Customers.customer_id = Reservations.customer_id);
+---------+
| Name    |
+---------+
| Rahul   |
| Yashpal |
| Gaurav  |
+---------+
3 rows in set (0.06 sec)

แบบสอบถามด้านบนระบุชื่อของลูกค้าที่ทำการจอง