c# - SQL 服务器 : how to detect unregarded values from a range of integers

标签 c# sql sql-server

我有一个问题,例如:我有一个整数 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/

相关文章:

c# - 为什么我的记录在 mongodb upsert 场景中得到零 objectid?

sql - Tsql Union Query 破坏了我的 asp.net gridview 中的排序

sql - 在 Transact SQL 中何时使用 EXCEPT 而不是 NOT EXISTS?

java - JDBC (JTDS) SQL Server 连接在 SSL 身份验证后关闭

C# 和 SQL Server 2008 - 开发数据库和生产数据库之间的脚本差异?

c# - 保护应用程序和后台代理之间共享的等存储数据

c# - 用于导航对象层次结构的 LINQ 查询

c# - 将 javascript 数组添加到 Asp.Net MVC 表单的提交(替换模型列表)

mysql - SQL COUNT 乘以连接表中的条目

php - 左连接 3 个表