MySQL 如何在MySQL子查询中测试是否存在任何记录?
我们可以使用MySQL EXIST运算符来测试子查询中的记录是否存在。换句话说,我们可以说EXIST运算符检查子查询是否返回任何行。使用MySQL子查询的EXIST运算符的语法如下−
阅读更多:MySQL 教程
语法
WHERE EXISTS(Subquery)
以上EXIST(subquery)表达式返回TRUE,如果子查询返回至少一行,则返回false。
例子
为了使其更加清晰,我们使用以下表中的数据−
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)
上述查询显示了预订了服务的客户姓名。
极客教程