Adr*_*ciu 12 sql t-sql sql-server sql-server-2005
我正在使用SQL Server 2005,我正在尝试实现这样的目标:我想在同一个select语句中获取前x行和最后x行.
SELECT TOP(5) BOTTOM(5)
Run Code Online (Sandbox Code Playgroud)
当然BOTTOM
不存在,所以我需要另一种解决方案.我相信有一个简单而优雅的解决方案,我没有得到.再次执行选择GROUP BY DESC
不是一个选项.
Ral*_*ine 22
使用联合是我能想到的唯一能实现这一目标的东西
select * from (select top(5) * from logins order by USERNAME ASC) a
union
select * from (select top(5) * from logins order by USERNAME DESC) b
Run Code Online (Sandbox Code Playgroud)
检查链接
SQL SERVER - 如何使用T-SQL一起检索TOP和BOTTOM行
你尝试过使用rownumber吗?
SELECT *
FROM
(SELECT *, ROW_NUMBER() OVER (Order BY columnName) as TopFive
,ROW_NUMBER() OVER (Order BY columnName Desc) as BottomFive
FROM Table
)
WHERE TopFive <=5 or BottomFive <=5
Run Code Online (Sandbox Code Playgroud)
http://www.sqlservercurry.com/2009/02/select-top-n-and-bottom-n-rows-using.html
我认为你有两个主要选择:
SELECT TOP 5 ...
FROM ...
ORDER BY ... ASC
UNION
SELECT TOP 5 ...
FROM ...
ORDER BY ... DESC
Run Code Online (Sandbox Code Playgroud)
或者,如果您知道表中有多少项:
SELECT ...
FROM (
SELECT ..., ROW_NUMBER() OVER (ORDER BY ... ASC) AS intRow
FROM ...
) AS T
WHERE intRow BETWEEN 1 AND 5 OR intRow BETWEEN @Number - 5 AND @Number
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
70135 次 |
最近记录: |