нужно удалить несколько неизвестных строк
имеем таблицу
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] [69] | ||
Голосовали: | 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 писал(а): со стороны знака "<" подсвечено "В этом месте ожидается круглая скобка"Поправь У меня все тип-топ работает. да и при запросе можешь еще Order By прописать чтобы сорт прошло а потом удаление производила. |
|||
карма: 0 |
|
Ответов: 1528
Рейтинг: 57
|
|||
Вот такая конструкция по надёжней, и везде работает. |
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
hitman249, ни в жизни не стал бы удалять из БД "излишки", ставил бы галочку в в спецстолбце со смыслом "Я, hitman249, считаю эту запись не нужной" и подпись
|
|||
карма: 19 |
|
Ответов: 1528
Рейтинг: 57
|
|||
Леонид, заказчик предоставил только такой способ получения информации. Его дело.
Вас рассмешило слово "излишки"? |
|||
карма: 0 |
|
Ответов: 8930
Рейтинг: 823
|
|||
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