SQL-仅选择前10行?


124

如何仅选择查询的前10个结果?

我只想显示以下查询的前10个结果:

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC

3
请提及数据库(和版本)。
Vikas Goel 2014年

2
应该是新的答案,stackoverflow.com/a
Evan Carroll,

另请尝试在TOP 10
Prisoner ZERO

Answers:


173

在SQL Server中,使用:

select top 10 ...

例如

select top 100 * from myTable
select top 100 colA, colB from myTable

在MySQL中,使用:

select ... order by num desc limit 10

44

取决于您的RDBMS

MS SQL服务器

SELECT TOP 10 ...

MySQL的

SELECT ... LIMIT 10

Sybase公司

SET ROWCOUNT 10
SELECT ...

等等。


7
sqlite3也使用... LIMIT 10语法
dat

24

在MySQL中:

SELECT * FROM `table` LIMIT 0, 10

1
极限0、10和极限10有什么区别?为什么不限制10、20给我在第10和第20行之间的10行?编辑:哦,所以限制10、20表示在第10行之后给我20行。如果我想要10到20之间的行,我必须限制10、10。谢谢!
AbdurRehman Khan

21

ANSI SQL答案是FETCH FIRST

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC
FETCH FIRST 10 ROWS ONLY

如果您希望包含联系,请FETCH FIRST 10 ROWS WITH TIES改为。

要跳过指定的行数,请使用OFFSET,例如

...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY

将跳过前20行,然后获取10行。

由较新版本的Oracle,PostgreSQL,MS SQL Server,Mimer SQL和DB2等支持。


20

在标准SQL中,可以使用:

... FETCH FIRST 10 ROWS ONLY

DB2,PostgreSQL和Oracle 12.1(及更高版本)支持此功能。


PostgreSQL的太
ralf.w.


2
SELECT *  
  FROM (SELECT ROW_NUMBER () OVER (ORDER BY user_id) user_row_no, a.* FROM temp_emp a)  
 WHERE user_row_no > 1 and user_row_no <11  

这对我有用。

有用的Dbscript


2

您正在寻找的是LIMIT子句。

SELECT a.names,
         COUNT(b.post_title) AS num
    FROM wp_celebnames a
    JOIN wp_posts b ON INSTR(b.post_title, a.names) > 0
    WHERE b.post_date > DATE_SUB(CURDATE(), INTERVAL 1 DAY)
GROUP BY a.names
ORDER BY num DESC
   LIMIT 10


1

PostgreSQL:

SELECT ... LIMIT [num] OFFSET [num];


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.