Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как удалить все старые записи, оставив только 30 ? 
:(
    Опции темы
admsasha
Дата 6.2.2012, 12:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Есть таблица (id,date,message) с 100 записями. Нужно оставить только последнии 30.

Как удалить все старые записи, оставив только 30 ?

PM MAIL WWW ICQ Jabber   Вверх
tzirechnoy
Дата 6.2.2012, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 3
Всего: 16



DELETE * FROM ... WHERE id NOT IN (SELECT id FROM ... ORDER BY date DESC LIMIT 30);
PM MAIL   Вверх
admsasha
Дата 6.2.2012, 12:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Код

#1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'


MySQL 5.1.40
PM MAIL WWW ICQ Jabber   Вверх
Zloxa
Дата 6.2.2012, 12:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 33
Всего: 161



delete from table t1 where 30 <=  (select count(*) from table t2 where t2.id > t1.id)


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
admsasha
Дата 6.2.2012, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Код

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your 
MySQL server version for the right syntax to use near 't1 where 30 <=  (select count(*) from table t2 where t2.id > t1.id)' at line 1

table, естественно,  поменял на свою таблицу.

Это сообщение отредактировал(а) admsasha - 6.2.2012, 13:15
PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 6.2.2012, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



admsasha, попробуй вариант tzirechnoy, но оформи подзапрос как View.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
admsasha
Дата 6.2.2012, 13:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 763
Регистрация: 28.1.2005

Репутация: нет
Всего: 6



Akina,  так же пишет, что не поддерживается версией.
PM MAIL WWW ICQ Jabber   Вверх
Akina
Дата 6.2.2012, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 106
Всего: 454



В таком разе сделайте через статическую темп-таблицу. 




--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
tzirechnoy
Дата 7.2.2012, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 3
Всего: 16



В MySQL, кажэтся, есть какая-то затычка, похожая на оракловский rownum.

Что-то вроде SELECT @rownum:=@rownum+1 AS rnum, table.* FROM (SELECT @rownum:=0) r, table. Если в WHERE не даст использовать ни rnum, ни @rownum -- можно оформить это вложэнным запросом, а у жэ в невложэнном поставить WHERE rnum < 30.


PS Ну и, лично для меня -- ещё одна галочка, что мыскль использовать не следует, а все разговоры, что он сильно продвинулся с 3.23 -- это только разговоры (как был непонятно как сляпанной недореляцыонкой, так и остался).
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0752 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.