【发布时间】:2018-11-22 17:14:54
【问题描述】:
我有一个以逗号分隔的 personID 列表:1265, 8632。
我想要做的是我想用一大块伪代码来表示的东西,这当然是行不通的。
declare @max int = (select count(*) from dbo.tablePersons)-1
declare @cnt = 0
BEGIN
SELECT personID FROM dbo.tablePersons
WHERE (1265, 8632)[@cnt]
IS NOT IN SELECT personID FROM dbo.tablePersons
SET @cnt = @cnt + 1
END
我想遍历列表 1265, 8632 并检查列表中的 ID 是否不在 SELECT personID FROM dbo.tablePersons 中。目标是在我的列表中找到SELECT personID FROM dbo.tablePersons 中的所有ID。
鉴于此伪代码不可行 - 是否有一种解决方法?
【问题讨论】:
-
尽可能避免循环或光标。 SQL Server 经过优化,可以在一组基础上执行操作,而不是 1 对 1。
标签: sql-server list tsql iteration