dazle
@dazle
Хороший электрик, но в душе программист

Как сформировать правильный запрос в бд?

Мне нужно сделать запрос на удаление строк таблицы rus по определенным критериям, а именно
mysql_query("DELETE FROM `rus` WHERE orderdate < CURDATE() ");

   mysql_query("DELETE * FROM `rus` ORDER BY `reyting` DESC LIMIT 3,100");

мне нужно совместить эти 2 запроса в один. 1 запрос работает как нужно, а вот 2 запрос в котором мне нужно сортировать таблицу по ячейки 'reyting' и удалить все 100 строк не трогая первые 3 не работает, т.е не удаляет строки. Когда я во 2 запросе меняю DELETE на SELECT и вывожу через echo все норм выводит:
$rs=mysql_query("SELECT * FROM `rus` ORDER BY `reyting` DESC LIMIT 3,100");
while($rt = mysql_fetch_array($rs));
{
echo $rt['reyting']."<br>"; //выводит весь рейтинг сортированным с 4 строки
}

а почему с удалением не работает? и как я упомянул выше мне нужно 2 запроса соединить в 1
  • Вопрос задан
  • 82 просмотра
Решения вопроса 1
BojackHorseman
@BojackHorseman Куратор тега MySQL
...в творческом отпуске...
DELETE FROM `rus`
WHERE `orderdate` < CURDATE()
    AND <id_fieldname> NOT IN (
        SELECT <id_fieldname> FROM `rus` ORDER BY `reyting` DESC LIMIT 3
)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Комментировать
mad_maximus
@mad_maximus
При удалении звёздочка не нужна, и так удаляется вся запись, но нужно условие удаления. Для объединения двух запросов используйте транзакции.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы