我希望对一个表进行查询,该表具有如下示例数据:
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