В любой момент я хочу, чтобы в моей таблице отображались последние 20 строк и удалялось все остальное. Я попробовал rownum> 20, но он сказал, что «0 строк удалено», даже когда у моего стола было 50 записей. Однако на triying rownum < 20 - первые 19 записей были удалены. Пожалуйста, помогите.Чтобы удалить записи за пределами 20 из таблицы
ответ
ROWNUM
- псевдо-столбец, которому присваивается 1 для первой строки, созданной запросом, 2 для следующего и т. Д. Если вы скажете «WHERE ROWNUM> 20», ни одна строка не будет сопоставлена - первая строка, если таковая имеется, будет иметь ROWNUM = 1, но ваш предикат заставляет ее отклонять ее, поэтому запрос не возвращает строк.
Если вы хотите запросить только последние 20 строк, вам нужно каким-то образом определить, какой заказ они были вставлены в таблицу. Например, если каждая строка получает отметку времени, когда она вставлена, это обычно будет довольно надежным (если вы не вставляете тысячи строк каждую секунду).
Например, таблица с определением MYTABLE (TS TIMESTAMP, Mycol NUMBER), вы можете запросить последние 20 строк с запросом, как это:
SELECT * FROM (
SELECT ts, mycol FROM MYTABLE ORDER BY ts DESC
)
WHERE ROWNUM <= 20;
Обратите внимание, что если есть более чем один ряд с точно такая же метка времени, этот запрос может выбрать несколько строк без детерминированности, если для 20-го пятна есть две или несколько строк.
Если у вас есть индекс на ts
, он, скорее всего, будет использовать этот индекс, чтобы избежать сортировки, и Oracle будет использовать оптимизацию остановки, чтобы остановить запрос после того, как он найдет 20-ю строку.
Если вы хотите удалить старые строки, вы могли бы сделать что-то вроде этого, предполагая, что mycol
уникален:
DELETE MYTABLE
WHERE mycol NOT IN (
SELECT mycol FROM (
SELECT ts, mycol FROM MYTABLE ORDER BY ts DESC
)
WHERE ROWNUM <= 20
);
Выполнение этого удаления, если количество строк, которые будут удалены большой, будет вероятно, поможет индекс на mycol.
- 1. DataList за пределами таблицы
- 2. внутренние записи за пределами записей
- 3. Как удалить из таблицы, если счетчик больше 20
- 4. Как удалить записи из таблицы?
- 5. Удалить текст за пределами тегов
- 6. Удалить все записи из таблицы
- 7. Удалить стиль из таблицы в коде за
- 8. Форма за пределами таблицы php
- 9. Текст за пределами данных таблицы
- 10. Отображать содержимое за пределами таблицы
- 11. Удалить% 20 из URL
- 12. Как отображать записи за пределами формы
- 13. Как удалить записи из-за несоответствия данных
- 14. Удалить блокировки записи таблицы
- 15. Как удалить повторяющиеся записи из таблицы
- 16. удалить все записи из таблицы с PHP
- 17. Как удалить все записи из таблицы
- 18. удалить дубликат записи из двух таблицы
- 19. удалить записи из таблицы, используя другую таблицу?
- 20. Попытка изменить объект за пределами транзакции записи
- 21. Удалить возможность щелкнуть за пределами divs
- 22. нужно удалить умножьте записи из таблицы
- 23. Скрыть div при нажатии за пределами таблицы
- 24. css показать изображение 20 px за пределами div
- 25. Удалить записи из таблицы во многих отношениях?
- 26. Как удалить записи из моей таблицы аудита?
- 27. Как удалить повторяющиеся записи из таблицы данных?
- 28. Удалить записи из таблицы, если существует таблица
- 29. Удалить несуществующие записи из связанной таблицы
Когда вы произносите delete, вы имеете в виду, «если они не отображаются в результате», или вы действительно хотите удалить их из базовой таблицы? –