SQL 中的 EXISTS 条件用于检查相关嵌套查询的结果是否为空(不包含元组)。 EXISTS 的结果是布尔值 True 或 False。它可以用在 SELECT、UPDATE、INSERT 或 DELETE 语句中。
句法:
SELECT column_name(s)
FROM table_name
WHERE EXISTS
(SELECT column_name(s)
FROM table_name
WHERE condition);
例子:
考虑以下两个关系“客户”和“订单”。
查询
- 将 EXISTS 条件与 SELECT 语句一起使用
获取至少下过一个订单的客户的名字和姓氏。SELECT fname, lname FROM Customers WHERE EXISTS (SELECT * FROM Orders WHERE Customers.customer_id = Orders.c_id);
输出:
- 将 NOT 与 EXISTS 一起使用
获取未下任何订单的客户的姓氏和名字。SELECT lname, fname FROM Customer WHERE NOT EXISTS (SELECT * FROM Orders WHERE Customers.customer_id = Orders.c_id);
输出:
- 在 DELETE 语句中使用 EXISTS 条件
从订单表中删除姓氏为“Mehra”的所有客户的记录。DELETE FROM Orders WHERE EXISTS (SELECT * FROM customers WHERE Customers.customer_id = Orders.cid AND Customers.lname = 'Mehra');
SELECT * FROM Orders;
输出:
- 将 EXISTS 条件与 UPDATE 语句一起使用
将客户表中 customer_id 为 401 的客户的 lname 更新为“Kumari”。UPDATE Customers SET lname = 'Kumari' WHERE EXISTS (SELECT * FROM Customers WHERE customer_id = 401);
SELECT * FROM Customers;
输出: