SQL – 只select前10行?

如何只select查询的前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 

在SQL服务器中,使用:

 select top 10 ... 

例如

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

在MySQL中,使用:

 select ... order by num desc limit 10 

取决于你的RDBMS

MS SQL Server

 SELECT TOP 10 ... 

MySQL的

 SELECT ... LIMIT 10 

SYBASE

 SET ROWCOUNT 10 SELECT ... 

等等。

神谕

 WHERE ROWNUM <= 10 and whatever_else ; 

ROWNUM是一个魔术variables,它包含了每一行的序号1 .. n

DB2

... FETCH FIRST 10 ROWS ONLY

在MySQL中:

 SELECT * FROM `table` LIMIT 0, 10 

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,MS SQL Server和Mimer SQL等支持

 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 

这对我有用。如果我可以,我有几个有用的dbscripts,你可以看看

有用的dbscripts

你要找的是一个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 

火鸟:

 SELECT FIRST 10 * FROM MYTABLE 
 SELECT* from <table name> WHERE rownum <= 10;