Jus*_*ier 14 sql database keyword
在SQL Server中,TOP可用于返回查询中的前n行.例如,
SELECT TOP 100 * FROM users ORDER BY id可能用于返回注册网站的前100个人.(这不一定是最好的方式,我只是以它为例).
我的问题是 - 在其他数据库中,TOP等于什么,例如Oracle,MySQL,PostgreSQL等?如果没有等效的关键字,您可以建议使用哪些变通方法来获得相同的结果?
Qua*_*noi 20
要选择第一100
行:
MySQL
并且PostgreSQL
:
SELECT *
FROM Table
ORDER BY
column
LIMIT 100
Run Code Online (Sandbox Code Playgroud)
Oracle
:
SELECT *
FROM (
SELECT t.*
FROM table
ORDER BY
column
)
WHERE rownum <= 100
Run Code Online (Sandbox Code Playgroud)
请注意,您需要一个子查询.如果不添加子查询,ROWNUM
将按10
随机顺序选择第一行,然后按顺序排序column
.
选择100
和之间的行300
:
MySQL
:
SELECT *
FROM TABLE
ORDER BY
column
LIMIT 100, 200
Run Code Online (Sandbox Code Playgroud)
PostgreSQL
:
SELECT *
FROM Table
ORDER BY
column
OFFSET 100 LIMIT 200
Run Code Online (Sandbox Code Playgroud)
Oracle
:
SELECT *
FROM (
SELECT t.*, ROW_NUMBER() OVER (ORER BY column) AS rn
FROM table
)
WHERE rn >= 100
AND rownum <= 200
Run Code Online (Sandbox Code Playgroud)
注意,尝试简化它ROWNUM BETWEEN 100 AND 200
(rn BETWEEN 100 AND 200
与外部查询相反)将不会返回任何内容Oracle
!
RN BETWEEN 100 AND 200
也将工作,Oracle
但效率较低.
有关性能详细信息,请参阅我博客中的文章:
对于Postgres和MySQL,它是LIMIT关键字.
SELECT *
FROM users
ORDER BY id
LIMIT 100;
Run Code Online (Sandbox Code Playgroud)