如何使用 SQL Server 返回不在表中的 id

Posted

技术标签:

【中文标题】如何使用 SQL Server 返回不在表中的 id【英文标题】:How to return ids that are not in the table using SQL Server 【发布时间】:2015-12-08 08:33:42 【问题描述】:

我想检查表中是否存在 ID,然后使用 SQL Server 从 where 子句返回表中不存在的 ID。

这是我的 SQL 查询,

select <columname> 
from tablename 
where ID in (10, 20, 30, 40, 100, 200)

如果表中存在 20 和 30,则输出应返回 10,40,100,200

请帮帮我!

【问题讨论】:

【参考方案1】:

你可以使用LEFT JOIN:

SELECT sub.ID
FROM (SELECT 10 AS id
      UNION ALL SELECT 20
      UNION ALL SELECT 30
      UNION ALL SELECT 40
      UNION ALL SELECT 100
      UNION ALL SELECT 200) AS sub
LEFT JOIN tablename  t
  ON sub.id = t.id
WHERE t.id IS NULL;

如果需要,您可以使用VALUES () 或表值参数更改子查询。

【讨论】:

以上是关于如何使用 SQL Server 返回不在表中的 id的主要内容,如果未能解决你的问题,请参考以下文章

SQL中,如何查询存在一个表而不在另一个表中的数据记录

如何计算两个日期之间的月数和天数,而不在 SQL Server 中返回负值

如何使用 DB2 sql 检查不在两个表中的记录以获取另一个第三个表中的日期?

选择不在其他表sql server中的字段组合

使用 SQL Server 传递带有数据表参数的表中的非数据表参数

T-SQL:如何在值列表中选择不在表中的值?