一尘不染

SQL Server过程声明列表

sql

我的SQL代码非常简单。我试图从这样的数据库中选择一些数据:

SELECT * FROM DBTable
WHERE id IN (1,2,5,7,10)

我想知道如何在选择之前声明列表(在变量,列表,数组等),而在选择内部仅使用变量名,如下所示:

VAR myList = "(1,2,5,7,10)"
SELECT * FROM DBTable
WHERE id IN myList

阅读 147

收藏
2021-03-17

共1个答案

一尘不染

您可以像这样将变量声明为临时表:

declare @myList table (Id int)

这意味着您可以使用该insert语句为它填充值:

insert into @myList values (1), (2), (5), (7), (10)

然后,您的select语句可以使用以下任一in语句:

select * from DBTable
where id in (select Id from @myList)

或者您可以像这样加入临时表:

select *
from DBTable d
join @myList t on t.Id = d.Id

而且,如果您做很多这样的事情,那么您可以考虑定义用户定义的表类型,这样就可以像下面这样声明变量:

declare @myList dbo.MyTableType
2021-03-17