NRe*_*ngh 10 sql-server-2005 sql-server except
我希望能够轻松检查查询中提供的表中不存在哪些唯一标识符。
为了更好地解释,这是我现在要做的,以检查表中不存在列表“1、2、3、4”的哪些 ID:
SELECT * FROM dbo."TABLE" WHERE "ID" IN ('1','2','3','4'),假设该表不包含 ID 为 2 的行。#N/A都在表中没有出现的值上。我认为必须有更好的方法来做到这一点。理想情况下,我正在寻找类似的东西
要检查的列表 -> 查询要检查的表 -> 不在表中的列表成员
Rem*_*anu 15
使用EXCEPT:
SELECT * FROM
(values (1),(2),(3),(4)) as T(ID)
EXCEPT
SELECT ID
FROM [TABLE];
Run Code Online (Sandbox Code Playgroud)
请参阅SqlFiddle。
该values构造函数将只SQL Server 2008或更高版本上运行。对于 2005 年,使用
SELECT 'value'
UNION SELECT 'value'
Run Code Online (Sandbox Code Playgroud)
我会建立一个包含您正在搜索的 ID 的表变量或临时表......然后使用 Remus 的解决方案,减去 2008 年的语法糖:
declare @t table (ID int)
insert into @t values (1)
insert into @t values (2)
insert into @t values (3)
insert into @t values (4)
insert into @t values (5)
select ID from @t
except
select ID
from [Table];
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
31563 次 |
| 最近记录: |