1

我有一个 sql 脚本,它将从表中提取记录,我希望它从 Id=4 的表中读取 5 条记录,然后存储 Id 以供稍后在脚本中使用

DECLARE @ITEM1 INT
DECLARE @ITEM2 INT
DECLARE @ITEM3 INT
DECLARE @ITEM4 INT
DECLARE @ITEM5 INT

SET @ITEM1 = (SELECT Id FROM dbo.PageElement WHERE TypeId = 4)
SET @ITEM2 = (SELECT Id FROM dbo.PageElement WHERE TypeId = 4)
SET @ITEM3 = (SELECT Id FROM dbo.PageElement WHERE TypeId = 4)
SET @ITEM4 = (SELECT Id FROM dbo.PageElement WHERE TypeId = 4)
SET @ITEM5 = (SELECT Id FROM dbo.PageElement WHERE TypeId = 4)

我不确定读取拉入我的 5 个变量的 Id 值的最佳方法

4

3 回答 3

4

为什么不使用表变量(或临时表)

declare @Temp_Items (ID int primary key, Num int identity(1, 1))

insert into @Temp_Items
select top 5 ID from dbo.PageElement where TypeId = 4

因此,您将有 5 行由Num. 顺便说一句,通常最好添加order by到查询中。

现在您可以@Item<N>获取select ID from @Temp_Items where Num = N.

于 2013-10-03T19:36:54.327 回答
0
Select Top 5 from dbo.PageElement WHERE TypeId = 4

这是最简单的方法

Select Top 5 Id from dbo.PageElement WHERE TypeId = 4


SET @ITEM1 = (SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4)
SET @ITEM2 = (SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4 and id not in( SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4))
SET @ITEM3 = (SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4 and id not in( SELECT Top 2 Id FROM dbo.PageElement WHERE TypeId = 4))
SET @ITEM4 = (SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4 and id not in( SELECT Top 3 Id FROM dbo.PageElement WHERE TypeId = 4))
SET @ITEM5 = (SELECT Top 1 Id FROM dbo.PageElement WHERE TypeId = 4 and id not in( SELECT Top 4 Id FROM dbo.PageElement WHERE TypeId = 4))
于 2013-10-03T19:30:32.537 回答
0

利用SELECT TOP 5

SELECT TOP 5 Id FROM dbo.PageElement
WHERE TypeId = 4
ORDER BY NEWID() -- Optional if you want them randomised
于 2013-10-03T19:31:15.650 回答