PostgreSQL EXISTS 运算符

EXISTS

EXISTS 运算符用于测试子查询中是否存在任何记录。

如果子查询返回一条或多条记录,则 EXISTS 运算符返回 TRUE。

实例

返回 orders 表中存在的所有客户:

SELECT customers.customer_name
FROM customers
WHERE EXISTS (
  SELECT order_id
  FROM orders
  WHERE customer_id = customers.customer_id
);

运行实例

上例中的结果表明,89 个客户在订单表中至少有一个订单。

NOT EXISTS

要检查哪些客户没有任何订单,我们可以将 NOT 运算符与 EXISTS 运算符一起使用:

实例

返回 orders 表中未出现的所有客户:

SELECT customers.customer_name
FROM customers
WHERE NOT EXISTS (
  SELECT order_id
  FROM orders
  WHERE customer_id = customers.customer_id
);

运行实例