gpt4 book ai didi

sql - 等同于 SQL Server TOP

转载 作者:太空狗 更新时间:2023-10-30 01:41:45 24 4
gpt4 key购买 nike

在 SQL Server 中,TOP 可用于返回查询中的前 n 行。例如,

SELECT TOP 100 * FROM users ORDER BY id
可用于返回注册站点的前 100 人。 (这不一定是最好的方式,我只是以它为例)。

我的问题是 - 在其他数据库(例如 Oracle、MySQL、PostgreSQL 等)中,什么等同于 TOP?如果没有等效的关键字,您可以推荐哪些变通方法来获得相同的结果?

最佳答案

要选择前 100 行:

MySQLPostgreSQL:

SELECT  *
FROM Table
ORDER BY
column
LIMIT 100

甲骨文:

SELECT  *
FROM (
SELECT t.*
FROM table
ORDER BY
column
)
WHERE rownum <= 100

注意这里需要一个子查询。如果您不添加子查询,ROWNUM 将以随机顺序选择前 10 行,然后按 对它们进行排序。

要选择 100300 之间的行:

MySQL:

SELECT  *
FROM TABLE
ORDER BY
column
LIMIT 100, 200

PostgreSQL:

SELECT  *
FROM Table
ORDER BY
column
OFFSET 100 LIMIT 200

甲骨文:

SELECT  *
FROM (
SELECT t.*, ROW_NUMBER() OVER (ORER BY column) AS rn
FROM table
)
WHERE rn >= 100
AND rownum <= 200

请注意,尝试使用 ROWNUM BETWEEN 100 AND 200 来简化它(与外部查询中的 rn BETWEEN 100 AND 200 相对)将在 甲骨文!

RN BETWEEN 100 AND 200 也可以在 Oracle 中使用,但效率较低。

有关性能详细信息,请参阅我的博客中的文章:

关于sql - 等同于 SQL Server TOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/829604/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com