以下哪两条 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 对这些随机行进行排序,这绝对不是我想要的。从我在那个答案中学到的,第二条语句的 order by 子句是多余的,可以被优化器删除,这也不是我想要的。
我问了一个关于 SQLite 数据库查询中的子句的类似问题limit
,并且有兴趣了解与 oracle db 一起使用的上述语句(使用limit
Vs )的任何差异。rownum