gpt4 book ai didi

sql - oracle SQL语句中rownum与order by子句结合使用

转载 作者:行者123 更新时间:2023-12-02 07:30:53 24 4
gpt4 key购买 nike

以下两条 SQL 语句中哪一条将返回所需的结果集(即 Status=0 且 StartTimes 最高的十行)?

两个语句是否始终返回相同的结果集(StartTime 是唯一的)?

SELECT * 
FROM MyTable
WHERE Status=0
AND ROWNUM <= 10
ORDER BY StartTime DESC

SELECT *
FROM (
SELECT *
FROM MyTable
WHERE Status=0
ORDER BY StartTime DESC
)
WHERE ROWNUM <= 10

背景

我的 DBAdmin 告诉我,第一个语句将首先将表限制为 10 行,然后按 StartTime 对这些随机行进行排序,这绝对不是我想要的。根据我在that answer中学到的知识,第二条语句的 order by 子句是多余的,可以被优化器删除,这也不是我想要的。

<小时/>

我问了similar question考虑到 SQLite 数据库查询中的 limit 子句,并且有兴趣了解所使用的上述语句(使用 limitrownum)的任何差异使用 Oracle 数据库。

最佳答案

您的第二个查询将有效

因为在第一个中,选择状态为 0 的前十行,然后完成排序,在这种情况下,获取的前十行不需要处于最高顺序

关于sql - oracle SQL语句中rownum与order by子句结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10430762/

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