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
SQL - Select first 10 rows only?
提问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 TIES
instead.
如果您想包括领带,请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 ;
ROWNUM
is 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,你可以看看
回答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];