以下两条SQL语句中哪一个将返回所需的结果集(即状态为0且开始时间最高的10行)?
这两个语句是否总是返回相同的结果集(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
背景
我的DB管理员告诉我,第一个语句将首先限制表格为10行,然后按StartTime对这些随机行进行排序,这绝不是我想要的。 从我在那个答案中了解到的内容来看,第二个语句的order by子句是多余的,可能会被优化器移除,这也不是我想要的。
我曾经提出过一个类似的问题,涉及到对SQLite数据库查询中的limit
子句的理解,并且我有兴趣了解与上述语句(使用limit
Vs rownum
)在Oracle数据库中使用的任何差异。