如何编写一个简单的SELECT语句,将报告限制为仅列值的前5位?
答案 0 :(得分:3)
您必须按该列值排序,可能按降序排序,具体取决于“前5 ”的含义;并且仅获取5个顶行。
使用MySQL,你会有类似的东西,我会说:
select *
from your_table
where ...
order by your_column desc
limit 5
使用MSSQL服务器,您没有limit
,但可以使用top
:
select top 5 *
from your_table
where ...
order by your_column desc
答案 1 :(得分:3)
让我们不要忘记SQL Server WITH TIES。如果前6个值相同,则前6个将从6
中随机选择SELECT TOP 5 WITH TIES... ORDER BY col DESC
答案 2 :(得分:2)
返回前n行。
select top n * from table order by column
这不起作用,因为top是关键字而不是函数:
select top(n) * from table order by column
使用set rowcount
set rowcount n
select * from table order by column
...
set rowcount 0
返回以行m开头的前n行。
select * from table limit m, n order by column
返回前n行
select top n from table order by column
返回前n行
select *
from table
where rownum < 5
order by column
返回前n行
select * from table order by column limit(n)
返回以行m
开头的前n行select * from table order by column limit(m,n)
返回前n行
select * from table order by column limit(n) offset(m)
返回前n行
select * from table order by column limit(n)
返回以行m
开头的前n行select * from table order by column limit(n) offset(m)
如果我错过任何数据库或行限制方法,请发表评论,我会添加它。谢谢!
答案 3 :(得分:1)
预言
从表中选择*,其中rownum&lt; 5;
答案 4 :(得分:0)
...
<强>的MySQL 强>
select * from table order by field_name limit 0, 4
<强> MSSQL 强>
select top 5 from table order by field_name
答案 5 :(得分:0)
SELECT TOP 5 LastName
FROM Employees
ORDER BY LastName
如果您想要按顺序排序,则必须使用order-by。如果您需要降序(从高到低),请将DESC添加到查询的末尾。
答案 6 :(得分:0)
你的意思是(在MSSQL中)?:
SELECT DISTINCT TOP 5 column_name FROM table_name ORDER BY column_name
这将只选择您感兴趣的列,并确保它不会复制值。如果你想要前5名,无论他们是否相同,你应该尝试没有明确的。
SELECT TOP 5 column_name FROM table_name ORDER BY column_name