4

以下哪两条 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 一起使用的上述语句(使用limitVs )的任何差异。rownum

4

1 回答 1

4

您的第二个查询将起作用

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

于 2012-05-03T12:27:33.413 回答