我有一个拥有数千名客户的数据库.他们都有唯一的客户ID.
从另一个不同的系统我收到了一个客户ID列表,我想知道在我的数据库中找不到哪些ID.
我的查询目前是这样的
select ID
from table
where ID in ('A1', 'A2', 'A3', ... 'A6499', 'A6500')
Run Code Online (Sandbox Code Playgroud)
从搜索条件,如何将不匹配的搜索值添加到结果集中?如果搜索条件数据已存在于同一数据库中,我知道如何执行此操作.除了制作临时表并加入它之外,还有其他选择吗?
我的数据库将包含比A6500更多的值,例如A7500.我不想在我的结果集中获得此值.
您可以使用表值构造函数:
SELECT t.ID
FROM (VALUES ('A1'), ('A2'), ('A3')) AS t(ID)
LEFT JOIN table ON t.ID = table.ID
WHERE table.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
或者,如果你将id作为逗号分隔的字符串使用string_split(2016+)或字符串拆分udf用于较低版本 - 我推荐Jeff Moden的DelimitedSplit8K:
SELECT value
FROM STRING_SPLIT('A1,A2,A3', ',') AS t
LEFT JOIN table ON t.value = table.ID
WHERE table.ID IS NULL
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
92 次 |
| 最近记录: |