查询列并获取不在列中的所有值的列表



我希望对一个表进行查询,该表具有如下示例数据:

1000
2000
3000
4000
5000

列名为sampleData,查询它并获得所有不存在的列的列表。

例子:where sampledata not in (1000,2000,3000,4000,5000,6000,7000)应以6000,7000或类似的反应

这可能吗?

with valuestocheck(val) as (
SELECT * FROM ( VALUES (1000),(2000),(3000),(4000),(5000),(6000),(7000)) t(val)
)
SELECT * 
FROM yourtableyoudidnotname x
LEFT JOIN valuestocheck on x.sampleData = valuestocheck.val
WHERE valuestocheck.val is null

左连接到表中所有您想要的项目——这意味着如果一个项目不在表中,左连接将为空。在where子句中使用过滤器来获取所需的项。

DECLARE @T table(testval int)
INSERT INTO @T(testval)
SELECT 1000 union
SELECT 2000 union
SELECT 3000 union
SELECT 4000 union
SELECT 5000 
DECLARE @AllValues TABLE (val int)
INSERT INTO @AllValues(val)
SELECT 1000 union
SELECT 2000 union
SELECT 3000 union
SELECT 4000 union
SELECT 5000 union
SELECT 6000 union
SELECT 7000 union
SELECT 8000 union
SELECT 9000
SELECT Val 
FROM @AllValues A LEFT JOIN @T T on T.testVal = A.val
WHERE T.testVal is null

最新更新