EXISTS 是 SQL 中的一个逻辑运算符,用于检查子查询是否返回任何行。它通常用于验证两个表之间是否存在匹配值,比使用 JOIN 或 IN 更高效,特别是在只需要知道是否存在匹配而不需要实际数据时。
SELECT column_name(s)
FROM table1
WHERE EXISTS (SELECT column_name FROM table2 WHERE condition);
SELECT customer_name
FROM customers
WHERE EXISTS (
SELECT 1
FROM orders
WHERE orders.customer_id = customers.customer_id
);
SELECT employee_name
FROM employees e1
WHERE EXISTS (
SELECT 1
FROM employees e2
WHERE e2.manager_id = e1.employee_id
);
SELECT product_name
FROM products
WHERE EXISTS (
SELECT 1
FROM inventory
WHERE inventory.product_id = products.product_id
AND quantity > 0
);
NOT EXISTS 是 EXISTS 的反向操作,用于检查子查询是否不返回任何行:
-- 查找没有订单的客户
SELECT customer_name
FROM customers
WHERE NOT EXISTS (
SELECT 1
FROM orders
WHERE orders.customer_id = customers.customer_id
);
SELECT 1
或 SELECT *
,因为实际选择的列不影响结果EXISTS 是验证表间关系存在性的高效工具,特别适合在只需要布尔结果(存在/不存在)的场景中使用。