Intereting Posts
Как уведомление работает в PostgreSQL? Совокупность смежных только записей с T-SQL Столбец автоматического увеличения базы данных Как заменить первый и последний символ столбца на сервере sql? Как вставить INSERT в таблицу, которая использует последовательные GUID в качестве первичного ключа? Подключение к именованному экземпляру SQL Server 2008 от классического ASP SQL: сравнение дат MAX из двух разных таблиц SQL Check Constraint не может ссылаться на другой столбец Импорт файла дампа MySQL в SQLite Число строк в результатах запроса с использованием Microsoft Access Преобразователи Python MySQLdb не работают SQL: поиск списка столбцов с заданным значением (внутри строки) sp_MSForEachDB Недопустимое использование оператора побочных эффектов внутри функции Ошибка проверки для одного или нескольких объектов при сохранении изменений в базе данных SQL Server с использованием Entity Framework Значения NA с использованием sqldf

Использование команды rownum в oracle SQL в сочетании с пунктом order by

Какой из следующих двух операторов SQL вернет желаемый набор результатов (т. Е. Десять строк с статусом = 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 сказал мне, что первый оператор сначала ограничивает таблицу до 10 строк, а затем упорядочивает эти случайные строки с помощью StartTime, что определенно не то, что я хочу. Из того, что я узнал в этом ответе , порядок по предложению второго оператора является избыточным и может быть удален оптимизатором, что тоже не то, что я хочу.


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

Ваш второй запрос будет работать

Поскольку в первом выбираются первые десять строк с статусом 0, а затем порядок выполняется, в этом случае первые десять строк должны быть не в самом высоком порядке