📜  PostgreSQL NOT IN条件(1)

📅  最后修改于: 2023-12-03 15:03:49.195000             🧑  作者: Mango

PostgreSQL NOT IN条件

在 PostgreSQL 中,NOT IN 条件是一种用于查询数据的条件语句。它用于在查询中排除包含在另一个集合中的值。本文将为您介绍 NOT IN 条件的用法、语法和示例。

用法

NOT IN 条件用于筛选不匹配指定值列表的数据行。它通常与 SELECT 语句中的 WHERE 子句一起使用。NOT IN 条件与 IN 条件正好相反。IN 条件使用逗号分隔的值列表,而 NOT IN 条件则排除这些值。

以下是 NOT IN 条件的一般格式:

SELECT column1, column2, ...
FROM table_name
WHERE columnN NOT IN (value1, value2, ...);

columnN 是要进行不匹配检查的列名称,而 (value1, value2, ...) 是指定排除值的列表。

示例

假设有一个名为 users 的表,其中包含用户的姓名和城市信息。我们想要查询不居住在特定城市的用户。以下是一个示例:

SELECT name, city
FROM users
WHERE city NOT IN ('New York', 'London', 'Paris');

上述查询将返回不居住在 'New York'、'London' 或 'Paris' 的用户的姓名和城市信息。

更高级的用法

除了使用硬编码的值列表外,我们还可以使用子查询来动态生成要排除的值。以下是一个示例:

SELECT name, city
FROM users
WHERE city NOT IN (SELECT city FROM banned_cities);

上述查询使用了一个子查询来从名为 banned_cities 的表中选择要排除的城市。这使得查询更加灵活和可维护,因为您可以随时更新 banned_cities 表中的数据,而不必修改主查询。

注意事项
  • 当使用 NOT IN 条件时,为空的列将被排除在结果之外。考虑使用 IS NULL 条件进行检查。
  • 对于较大的数据集,在排除的值列表中使用 NOT EXISTSLEFT JOIN 可能会更有效率。

希望这篇介绍能帮助您了解并正确使用 PostgreSQL 中的 NOT IN 条件。更多详细信息可以参考 PostgreSQL 官方文档。

参考链接:PostgreSQL Documentation