нужно удалить несколько неизвестных строк
имеем таблицу
id | data | other_data
id идут не по порядку (ну по факту по порядку, но есть числовые промежутки)
нам нужно определить сколько сейчас строк в БД
затем, если их > 100 удалить самые старые определяя "возраст" по id (наиболее старые значения имеют меньший id), чтобы в сумме их осталось 100
т.е. нужен запрос который удаляет "излишки"
Этот топик читают: Гость
|
Ответов: 1528
Рейтинг: 57
|
|||
| карма: 0 |
|
|
Ответов: 704
Рейтинг: 44
|
|||
|
hitman249 писал(а): нужно удалить несколько неизвестных строкимеем таблицу id | data | other_data id идут не по порядку (ну по факту по порядку, но есть числовые промежутки) нам нужно определить сколько сейчас строк в БД затем, если их > 100 удалить самые старые определяя "возраст" по id (наиболее старые значения имеют меньший id), чтобы в сумме их осталось 100 т.е. нужен запрос который удаляет "излишки" |
|||
| карма: 0 |
| ||
| файлы: 1 | code_34074.txt [101B] [136] | ||
| Голосовали: | hitman249 |
|
Ответов: 1528
Рейтинг: 57
|
|||
|
Kazbek17, ошибки
запрос писал(а): DELETE FROM t1 WHERE id IN (SELECT id FROM t1 LIMIT 0, 100 < (SELECT count(*) FROM t1));со стороны знака "<" подсвечено "В этом месте ожидается круглая скобка" |
|||
| карма: 0 |
|
|
Ответов: 704
Рейтинг: 44
|
|||
|
hitman249 писал(а): со стороны знака "<" подсвечено "В этом месте ожидается круглая скобка"Поправь |
|||
| карма: 0 |
|
|
Ответов: 1528
Рейтинг: 57
|
|||
Вот такая конструкция по надёжней, и везде работает. |
|||
| карма: 0 |
|
|
Ответов: 8975
Рейтинг: 824
|
|||
|
hitman249, ни в жизни не стал бы удалять из БД "излишки", ставил бы галочку в в спецстолбце со смыслом "Я, hitman249, считаю эту запись не нужной" и подпись
|
|||
| карма: 19 |
|
|
Ответов: 1528
Рейтинг: 57
|
|||
|
Леонид, заказчик предоставил только такой способ получения информации. Его дело.
Вас рассмешило слово "излишки"? |
|||
| карма: 0 |
|
|
Ответов: 8975
Рейтинг: 824
|
|||
|
hitman249, ну тогда понятно, кто платит, тот и заказывает
|
|||
| карма: 19 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
hitman249 писал(а): заказчик предоставил только такой способ получения информации. Если ты удаляешь колонку с ID и потом нумеруешь по-новому с 1, значит там ID ни нафик не нужно. Вроде же в MySql есть и NUMROW, и ROWID. А твою задачу можно решить и так: 1. 2. OPTIMIZE TABLE test; выполнит команды из пункта 2. И перед этими действиями нужна проверка - а есть ли мальчик ? |
|||
| карма: 25 |
|
|
Ответов: 1528
Рейтинг: 57
|
|||
|
Tad,
там плеер делает запись в файл когда начинает играть новая песня, мой скрипт должен следить за этим текстовым файлом и показывать последние 100 песен на сайте. запрос приведён в упрощённом виде, там больше столбцов. id нужен, чтобы при разных выборках можно было ориентироваться где было "раньше". |
|||
| карма: 0 |
|
|
Гость
Ответов: 17029
Рейтинг: 0
|
|||
|
Редактировалось 2 раз(а), последний 2025-01-12 08:08:06 |
|||
| карма: 0 |
|
|
Ответов: 16884
Рейтинг: 1239
|
|||
|
Выше я.
hitman249 писал(а): id нужен, чтобы при разных выборках можно было ориентироваться где было "раньше". |
|||
| карма: 25 |
|
|
Ответов: 1528
Рейтинг: 57
|
|||
|
Tad,
Tad писал(а): Какое "раньше" если ты перенумеровываешь ID ?1) я порядок не меняю, нет рандома. 2) так что раньше всегда будет раньше. |
|||
| карма: 0 |
|
13




Поиск
Друзья
Администрация