以下两个 SQL 语句中哪一个将返回所需的结果集(即 Status=0 且 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 告诉我第一个语句将first将表限制为 10 行,然后按 StartTime 对这些随机行进行排序,这绝对不是我想要的。
从我所学到的那个答案,第二个语句的 order by 子句是多余的,可以被优化器删除,这也不是我想要的。
我问了一个类似的问题关于limit
对 SQLite 数据库的查询中的子句,并且有兴趣了解与上述语句的任何差异(使用limit
Vs rownum
)与 oracle 数据库一起使用。
你的第二个查询将会起作用
因为在第一个中,选择状态为 0 的前十行,然后完成排序,在这种情况下,获取的前十行不需要处于最高顺序
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)