Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Удаление последних N записей из Mysql (http://www.flasher.ru/forum/showthread.php?t=201602)

fduch 18.06.2013 21:35

Удаление последних N записей из Mysql
 
PHP код:

$kolvo_mess=0;
$eres mysql_query("SELECT * FROM `message` where id=11 ORDER BY time DESC");
while(
$row mysql_fetch_array($eres))
{
$tim $row['time']; //CURRENT_TIMESTAMP
$kolvo_mess++;
if (
$kolvo_mess 200){   mysql_query ("DELETE FROM message WHERE id = 11 and time = $tim");}



Нужно оставить последние 200 записей, поле тайм, заполняется автоматом,
Но команда делит в таком виде почемуто не работает. Если оставить только условие id=11, то все поля
успешно стираются) если оставить только условие time = $tim, не работает.
echo $row['time']; и echo $tim; выдают одно и тоже.

Korchy 18.06.2013 22:39

Код AS1/AS2:

delete from message where id=11 and time in (select * from (SELECT time FROM message WHERE id=11 order by time desc limit 200) as tbl);


wvxvw 19.06.2013 17:59

Тут еще есть смысл подумать: что будет выгоднее, удалить Х записей, оставив У записей, или скопировать У записей в новую таблицу, trunkate/drop старую, и потом переименовать / скопировать таблицу, куда копировали У записей.
Например, если нужно оставить 200 записей из 200000, то я так думаю, что второй вариант будет очень сильно быстрее :)


Часовой пояс GMT +4, время: 07:59.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.