Id
(主键)和Name
行。
现在,我有一个逗号分隔的ID列表,例如-2,5,6
。我只想使用这些逗号分隔的ID,然后将每个ID与现有数据进行比较。并且仅返回那些唯一的ID,这意味着数据库中不存在。请注意,输出也应与输入格式相同,即以逗号分隔的格式。我正在使用Microsoft SQL Server 2017
我已经尝试过的方法如下:
select * from DemoTable where Id 2,5,6 not in DemoTable
但这似乎是不正确的语法。我该如何解决?
答案 0 :(得分:2)
您可以使用它。您需要从另一侧看这个问题。我觉得这很有趣。
实际上,您有一个ID列表作为基础,并且您想从表中未包含的字符串中排除ID。因此,首先我们需要找到ID的列表,然后将其从表的ID中排除,以获得所需的结果。最后,您可以使用stuff
或string_agg
将最终结果转换为,
分隔的字符串。
select Value from (
select value from string_split('1,2,3',',')) as t
where t.value not in (select id from demotable)
您可以检查此链接是否有效。FIDDLE。
答案 1 :(得分:0)
这是您的查询。
select string_agg(val, ',') as result
from (
select value as val from string_split('1,2,3',',')) as t
where t.val not in (select id from tableA)
结果:(逗号分隔)
1,2,3