我有一个问题,例如:我有一个整数 id 范围(从 1 到 1000),这个范围应该是 SQL Server 表中的 id,我想检测这个范围中的哪些数字不是在 table 上,抱歉我的英语不好,谢谢
最佳答案
另一个更简单的选择是使用以下查询
SELECT number
FROM master..spt_values
WHERE number BETWEEN 1 AND 1000
AND NOT EXISTS ( SELECT 1
FROM Your_Table t --<-- your table where you are checking
WHERE t.ID = number) -- the missing values
GROUP BY number
上述解决方案仅适用于查找大约 1000 个值的情况。对于更多的值,你需要稍微修改它,比如
-- Select the maximum number or IDs you want to check
DECLARE @Max_Num INT = 10000;
;WITH CTE AS
(
SELECT TOP (@Max_Num) ROW_NUMBER() OVER ( ORDER BY (SELECT NULL)) numbers
FROM master..spt_values v1 cross join master..spt_values v2
)
SELECT c.numbers
FROM CTE c
WHERE NOT EXISTS (SELECT 1
FROM Your_table t
WHERE t.ID = c.numbers)
关于c# - SQL 服务器 : how to detect unregarded values from a range of integers,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28527327/