SQL - 仅选择前10行?

Mik*_*ike 105 sql

如何仅选择查询的前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
Run Code Online (Sandbox Code Playgroud)

Der*_*ger 153

在SQL Server中,使用:

select top 10 ...
Run Code Online (Sandbox Code Playgroud)

例如

select top 100 * from myTable
select top 100 colA, colB from myTable
Run Code Online (Sandbox Code Playgroud)

在MySQL中,使用:

select ... order by num desc limit 10
Run Code Online (Sandbox Code Playgroud)


mar*_*ton 40

取决于您的RDBMS

MS SQL Server

SELECT TOP 10 ...
Run Code Online (Sandbox Code Playgroud)

MySQL的

SELECT ... LIMIT 10
Run Code Online (Sandbox Code Playgroud)

SYBASE

SET ROWCOUNT 10
SELECT ...
Run Code Online (Sandbox Code Playgroud)

等等.

  • sqlite3也使用了... LIMIT 10语法 (7认同)

Ben*_*Ben 20

在MySQL中:

SELECT * FROM `table` LIMIT 0, 10
Run Code Online (Sandbox Code Playgroud)

  • 限制 0、10 和限制 10 有什么区别?为什么 limit 10, 20 不给我第 10 行和第 20 行之间的 10 行?编辑:哦,所以限制 10, 20 意味着在第 10 行之后给我 20 行。如果我想要 10 到 20 行之间的行,我必须限制 10、10。谢谢! (2认同)

wal*_*lyk 17

神谕

WHERE ROWNUM <= 10  and whatever_else ;
Run Code Online (Sandbox Code Playgroud)

ROWNUM是一个神奇的变量,它包含每一行的序列号1 .. n.

  • 这是错误的。“rownum”将从表中获取前“n”行。它不会从“whatever_else”条件中过滤! (3认同)

jar*_*rlh 17

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
Run Code Online (Sandbox Code Playgroud)

如果你想要包括关系,请FETCH FIRST 10 ROWS WITH TIES改为.

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

...
ORDER BY num DESC
OFFSET 20
FETCH FIRST 10 ROWS ONLY
Run Code Online (Sandbox Code Playgroud)

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

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

  • 非常感谢这是我搜索过的解决方案 (2认同)

bra*_*ter 16

DB2

... FETCH FIRST 10 ROWS ONLY