PostgreSQL IN 运算符

IN

IN 运算符允许您在 WHERE 子句中指定可能值的列表。

IN 运算符是多个 OR 条件的简写。

实例

返回所有来自 'Germany', France' 或 'UK' 的客户:

  1. SELECT * FROM customers
  2. WHERE country IN ('Germany', 'France', 'UK');

NOT IN

通过在 IN 运算符前面使用 NOT 关键字,可以返回不是列表中任何值的所有记录。

实例

返回所有非 'Germany', France' 或 'UK' 的客户:

  1. SELECT * FROM customers
  2. WHERE country NOT IN ('Germany', 'France', 'UK');

IN (SELECT)

您也可以在括号内使用 SELECT 语句来返回 SELECT 语句结果中的所有记录。

实例

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

  1. SELECT * FROM customers
  2. WHERE customer_id IN (SELECT customer_id FROM orders);

NOT IN (SELECT)

上例中的结果返回了 89 条记录,这意味着有 2 个客户没有下任何订单。

让我们使用 NOT IN 运算符来检查这是否正确。

实例

返回 orders 表中未下任何订单的所有客户:

  1. SELECT * FROM customers
  2. WHERE customer_id NOT IN (SELECT customer_id FROM orders);