You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL Server如何查询列表中未存在于表中的值?

筛选值列表中未存在于SQL Server表中的值

针对你的需求,这里提供几种简洁的实现方式:

方法一:使用LEFT JOIN

通过VALUES子句将值列表转换为虚拟表,再与目标表左连接,筛选出原表中无匹配的记录:

-- 假设目标表名为 TestTable
SELECT v.Id
FROM (VALUES (1), (2), (3)) AS v(Id)
LEFT JOIN TestTable t ON v.Id = t.Id
WHERE t.Id IS NULL;

方法二:使用NOT EXISTS

通过NOT EXISTS子查询直接检查值是否存在于目标表中:

SELECT v.Id
FROM (VALUES (1), (2), (3)) AS v(Id)
WHERE NOT EXISTS (
    SELECT 1
    FROM TestTable t
    WHERE t.Id = v.Id
);

扩展方案:使用表变量(适合长值列表)

如果值列表较长或需要重复使用,可以先将值存入表变量再查询:

DECLARE @TargetValues TABLE (Id INT);
INSERT INTO @TargetValues VALUES (1), (2), (3);

SELECT v.Id
FROM @TargetValues v
WHERE NOT EXISTS (
    SELECT 1
    FROM TestTable t
    WHERE t.Id = v.Id
);

以上三种方式都能得到预期结果Id=2。

内容的提问来源于stack exchange,提问作者Manta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 11:55:16