|
|
|
| вообщем пытался составить запрос или целый ряд действия, чтобы выполнить правильный запрос, но ничего не вышло...
Вообшем, нужно составить запрос на удаление записей из таблицы в БД, но так, чтобы в нём остались последние 60 записей.
При чём id могут быть разные, необязательно идущие в чётком порядке.
пробовал так:
<?
//вычисляю макс.значение id в таблице
$max=mysql_query("select max(id) from messages");
//удаляю записи, сей id меньше более чем на 60 максимального значения
mysql_query("delete from messages where id<($max-60)");
?>
|
этот способ плох тем, что записи то удалаяются, но этот способ не работает тогда, когда id идут не в чётком порядке, т.е. могут быть пробелы (пример: 1,2,3,5,9,15)
и пробовал вот так:
<?
//вычисляю минимальное значение id, но так, чтобы оно было минимальным среди последних 60 записей
$min=mysql_query("select min(id) from messages order by id desc limit 60");
#запрос не обрабатывается как хотелось бы, т.е. возвращается результат всё равно
#минимальный для ВСЕХ записей в таблице, так что дальнейший код не имеет смысла
?>
|
вот так вот, и не получается.... | |
|
|
|
|
|
|
|
для: BAHO
(19.07.2006 в 12:58)
| | Получите сперва граничный id
SELECT id FROM messages ORDER BY id DESC LIMIT 60 , 1
а потом уже удалите все записи id которых меньше граничного. | |
|
|
|
|
|
|
|
для: Trianon
(19.07.2006 в 13:05)
| | да, а если sql-запрос ничего не возвращает... в итоге функция mysql_result выдаёт ошибку... могу конечно собачку перед переменной поставить, но как другим способом? | |
|
|
|
|
|
|
|
для: BAHO
(19.07.2006 в 18:46)
| | если запрос не вернул ни одной строки, значит столько строк просто нет. Значит и удалять ничего не надо. | |
|
|
|