PostgreSQL EXISTS 运算符

EXISTS

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

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

实例

返回 orders 订单表中显示的所有客户:

  1. SELECT customers.customer_name
  2. FROM customers
  3. WHERE EXISTS (
  4. SELECT order_id
  5. FROM orders
  6. WHERE customer_id = customers.customer_id
  7. );

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


NOT EXISTS

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

实例

退回 orders 订单表中未显示的所有客户:

  1. SELECT customers.customer_name
  2. FROM customers
  3. WHERE NOT EXISTS (
  4. SELECT order_id
  5. FROM orders
  6. WHERE customer_id = customers.customer_id
  7. );