选择MIN with order by

时间:2015-11-02 23:23:19

标签: tsql

我有一个像这样的@Temp表:

 Id    TypeId
--------------
14892 |   2
14893 |   3
--------------

我需要像这样一次遍历一条记录:

declare @Id int = (select MIN(Id) from @Temp)

while @Id IS NOT NULL
begin
    -- Code here
    select @Id = MIN(Id) from @Temp where @Id < Id
end

我还需要使用TypeId这样的记录循环遍历记录:

declare @Id int = (select MIN(Id) from @Temp order by TypeId desc)

因此,当循环记录时,我应该按顺序获得14893然后14892。当然,我在使用order by时遇到此错误:

 The ORDER BY clause is invalid in views, inline functions, derived tables, subqueries, and common table expressions, unless TOP, OFFSET or FOR XML is also specified.

2 个答案:

答案 0 :(得分:1)

select ID, min(typeID) 
from @Temp  
group by ID  

答案 1 :(得分:0)

我需要在每条记录上做很多复杂的功能。结果集最小 - 最多10条记录。我知道在tsql中应该避免循环,但有时它只是你的选择。

我最终这样做了:

.php