繁体   English   中英

另一个表中不存在的数字临时表

[英]Temp table of numbers that do not exist in another table

我有一个称为UsedNumbers的表

UsedNumbers包含1到9999之间的数字 这些数字可以在此范围内的任何位置。

我想创建一个临时表#UnUsedNumbers

到目前为止,我发现代码创建了一个介于1到9999之间的数字范围。但是,我不完全确定如何将其插入到临时表中,然后仅提取UsedNumbers中不存在的数字

;WITH x AS
(
    SELECT TOP (224) [OBJECT_ID] FROM sys.all_objects
)
SELECT TOP (9999) n = ROW_NUMBER() OVER (ORDER BY x.[object_id])
FROM x CROSS JOIN x AS y
ORDER BY n;

如果有人可以提供帮助,我想了解更多。

您可以尝试类似:

;WITH x AS
(
    SELECT TOP (224) [OBJECT_ID] FROM sys.all_objects
)
SELECT TOP (9999) n = ROW_NUMBER() OVER (ORDER BY x.[object_id])
FROM x CROSS JOIN x AS y
EXCEPT 
SELECT num
FROM UsedNumbers
ORDER BY n

试试这个代码

;WITH NumberCTE AS
(
    SELECT TOP (224) [OBJECT_ID] FROM sys.all_objects
)
,
AllNumbersCTE AS
(
    SELECT TOP (9999)
        ROW_NUMBER() OVER(order by RS1.[OBJECT_ID]) AS ROWID
    FROM 
        NumberCTE AS RS1
    LEFT JOIN NumberCTE AS RS2 ON 1 = 1
)

SELECT ROWID FROM AllNumbersCTE WHERE ROWID NOT IN (SELECT Number FROM UsedNumbers)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM