📅  最后修改于: 2023-12-03 15:03:49.195000             🧑  作者: Mango
在 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 EXISTS
或 LEFT JOIN
可能会更有效率。希望这篇介绍能帮助您了解并正确使用 PostgreSQL 中的 NOT IN
条件。更多详细信息可以参考 PostgreSQL 官方文档。