Предполагая, что вы вставляете данные с увеличивающимся значением первичного ключа (с помощью последовательности или/значения даты отметки времени), то вы можете сделать:
SELECT *
FROM (
SELECT *
FROM table_name
ORDER BY primary_key_column
)
WHERE ROWNUM <= 10;
Вам нужен внешний запрос в порядке, в исполнение которых происходит в запросе:
- в
WHERE
оговорка фильтры применяются (и псевдо-столбец ROWNUM
генерируется для каждой строки, которая соответствует всем WHERE
пунктом фильтров);
- Затем применяется статья
ORDER BY
.
Применяя это в одном запросе, вы получите первые 10 строк, найденных в базе данных, и затем упорядочите эти строки с помощью первичного ключа (а не того, что вы хотите). Используя внутренний запрос, вы можете принудительно применить предложение ORDER BY
, а затем при выполнении внешнего запроса произойдет фильтрация требуемого количества строк.
Если вы не имеете увеличивающийся первичный ключ, то вам придется полагаться только ROWNUM
без ORDER BY
пункта - тем не менее, если таблица включено движение строки или если вы удалите строку, а затем вставить другую строку (в этом случае база данных может заполнить пустое пространство новой строкой), то вы можете найти, что строки не извлекаются в порядке вставки. Если вы можете жить с этим, то просто сделать:
SELECT *
FROM table_name
WHERE ROWNUM <= 10;
Читать Спросите Тома о топ-н и пагинацией: http://www.oracle.com/technetwork/issue-archive/2007/07-jan/o17asktom- 093877.html и http://www.oracle.com/technetwork/issue-archive/2006/06-sep/o56asktom-086197.html –
Сохраняете ли вы созданный тип даты в таблице или, может быть, последовательность? Если нет, решение не может быть возможным, поскольку Oracle не сохраняет порядок, по которому строки были добавлены в таблицу (вы не можете использовать rowid, rownum или любой порядок по умолчанию, чтобы получить порядок, в который строки были вставлены в таблицу) , –
Возможный дубликат [Oracle SQL - как получить самые высокие 5 значений столбца] (http://stackoverflow.com/questions/2306744/oracle-sql-how-to-retrieve-highest-5-values-of-a -column) – MT0