SQL - 只选择前 10 行?

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/1891789/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-01 04:44:38  来源:igfitidea点击:

SQL - Select first 10 rows only?

sql

提问by Mike

How do I select only the first 10 results of a query?

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

I would like to display only the first 10 results from the following query:

我只想显示以下查询的前 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

回答by Derek Slager

In SQL server, use:

在 SQL 服务器中,使用:

select top 10 ...

e.g.

例如

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

In MySQL, use:

在 MySQL 中,使用:

select ... order by num desc limit 10

回答by martin clayton

Depends on your RDBMS

取决于您的 RDBMS

MS SQL Server

微软 SQL 服务器

SELECT TOP 10 ...

MySQL

MySQL

SELECT ... LIMIT 10

Sybase

赛贝斯

SET ROWCOUNT 10
SELECT ...

Etc.

等等。

回答by Ben

In MySQL:

在 MySQL 中:

SELECT * FROM `table` LIMIT 0, 10

回答by jarlh

The ANSI SQL answer is FETCH FIRST.

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

If you want ties to be included, do FETCH FIRST 10 ROWS WITH TIESinstead.

如果您想包括领带,请FETCH FIRST 10 ROWS WITH TIES改为这样做。

To skip a specified number of rows, use OFFSET, e.g.

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

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

Will skip the first 20 rows, and then fetch 10 rows.

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

Supported by newer versions of Oracle, PostgreSQL, MS SQL Server, Mimer SQL and DB2 etc.

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

回答by brabster

In standard SQL you can use:

在标准 SQL 中,您可以使用:

... FETCH FIRST 10 ROWS ONLY

... FETCH FIRST 10 ROWS ONLY

This is supported in DB2, PostgreSQL and Oracle 12.1 (and later)

这在 DB2、PostgreSQL 和 Oracle 12.1(及更高版本)中受支持

回答by wallyk

Oracle

甲骨文

WHERE ROWNUM <= 10  and whatever_else ;

ROWNUMis a magic variable which contains each row's sequence number 1..n.

ROWNUM是一个魔术变量,其中包含每行的序列号 1.. n

回答by sayannayas

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  

This worked for me.If i may,i have few useful dbscripts that you can have look at

这对我有用。如果可以的话,我有一些有用的 dbscripts,你可以看看

Useful Dbscripts

有用的 Dbscripts

回答by AvatarKava

What you're looking for is a LIMIT clause.

您要查找的是 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

回答by ne2dmar

Firebird:

火鸟:

SELECT FIRST 10 * FROM MYTABLE

回答by Henry

PostgreSQL:

PostgreSQL:

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