Использование rownum в SQL-выражении Oracle в сочетании с предложением order by

Which of the following two SQL statements will return the desired result set (т. е. десять строк с Status = 0 и самыми высокими значениями StartTimes)?

Will both statements always return the same result set (StartTime уникален)?

<code>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
</code>

Background

Мой DBAdmin сказал мне, что первое утверждение будетfirst ограничить таблицу до 10 строк, а затем упорядочить эти случайные строки по StartTime, что определенно не то, что я хочу. Из того, что я узнал вэтот ответусловие order by второго оператора является избыточным и может быть удалено оптимизатором, что тоже не то, что я хочу.

Я спросиланалогичный вопрос Принимаяlimit предложение в запросе к базе данных SQLite, и я заинтересован в понимании любых различий с вышеуказанными утверждениями (используяlimit Vsrownum) используется с оракулом дБ.

Ответы на вопрос(1)

Ваш ответ на вопрос