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)