将SQL语句限制为前5个金额

时间:2010-02-21 15:15:46

标签: sql

如何编写一个简单的SELECT语句,将报告限制为仅列值的前5位?

7 个答案:

答案 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)

的Sybase

返回前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

的MySQL

MySQL docs

返回以行m开头的前n行。

select * from table limit m, n order by column

SQL Server

返回前n行

select top n from table order by column

的Oracle

返回前n行

select * 
  from table 
 where rownum < 5 
 order by column

SQLite的

SQLite docs

返回前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)

的Postgres

Postgres docs

返回前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