如何让SQL在结果中显示不匹配的条件?
我有一个拥有数千名客户的数据库。它们都有唯一的客户ID 从另一个不同的系统中,我收到了一份客户ID列表,我想知道哪些ID在我的数据库中找不到 我当前的查询是这样的如何让SQL在结果中显示不匹配的条件?,sql,sql-server,Sql,Sql Server,我有一个拥有数千名客户的数据库。它们都有唯一的客户ID 从另一个不同的系统中,我收到了一份客户ID列表,我想知道哪些ID在我的数据库中找不到 我当前的查询是这样的 select ID from table where ID in ('A1', 'A2', 'A3', ... 'A6499', 'A6500') 从搜索条件中,如何将不匹配的搜索值放入结果集中? 我知道如果搜索条件数据已经存在于同一个数据库中,我会怎么做。除了制作一个临时表并与之连接,还有其他选择吗 我的数据库将包含比A6500更
select ID
from table
where ID in ('A1', 'A2', 'A3', ... 'A6499', 'A6500')
从搜索条件中,如何将不匹配的搜索值放入结果集中?
我知道如果搜索条件数据已经存在于同一个数据库中,我会怎么做。除了制作一个临时表并与之连接,还有其他选择吗
我的数据库将包含比A6500更多的值,例如A7500。我不想在结果集中获取此值。使用显式
值
,可以写入1000多个值,这是中的限制
;WITH OtherDatabaseIDs AS
(
SELECT
V.*
FROM
(VALUES
(1000),
--... as many records as you want
(2500)) V(OtherDatabaseID)
)
SELECT
*
FROM
OtherDatabaseIDs AS T
WHERE
NOT EXISTS (SELECT 1 FROM table AS O WHERE T.OtherDatabaseID = O.ID)
使用显式值
,可以写入1000多个值,这是
中的
;WITH OtherDatabaseIDs AS
(
SELECT
V.*
FROM
(VALUES
(1000),
--... as many records as you want
(2500)) V(OtherDatabaseID)
)
SELECT
*
FROM
OtherDatabaseIDs AS T
WHERE
NOT EXISTS (SELECT 1 FROM table AS O WHERE T.OtherDatabaseID = O.ID)
您可以使用:
或者,如果您将ID作为逗号分隔的字符串使用(2016+),或者对于较低版本,使用字符串拆分udf-我建议Jeff Moden:
您可以使用:
或者,如果您将ID作为逗号分隔的字符串使用(2016+),或者对于较低版本,使用字符串拆分udf-我建议Jeff Moden:
可能像不在中一样简单?这将从我的数据库返回不匹配的ID。但我想从搜索条件中知道哪些不匹配。例如,我的数据库可能包含ID“A7500”,我不想在结果中得到它。嗯……你的问题太模糊了,我只能猜测。也许简单到不在?这将从我的数据库返回不匹配的ID。但我想从搜索条件中知道哪些不匹配。例如,我的数据库可能包含ID“A7500”,我不想在结果中得到它。嗯……你的问题太模糊了,我只能猜测。谢谢!这正是我要找的,但找不到方法。谢谢!这正是我要找的,但是找不到方法。也谢谢你的帮助!也谢谢你的有益评论!
SELECT value
FROM STRING_SPLIT('A1,A2,A3', ',') AS t
LEFT JOIN table ON t.value = table.ID
WHERE table.ID IS NULL