@reech

Как удалить записи из таблицы?

Нужно оставить 100 записей в таблице, удалив все остальное.
Примерный SQL запрос:

delete from table where shop_id = '12' limit 100, 7000


Ошибка:

Uncaught PDOException: SQLSTATE[42000]: Syntax error or access violation: 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 ' 7000'


Подскажите как правильно это сделать. Спасибо за ответы.
  • Вопрос задан
  • 161 просмотр
Решения вопроса 1
@vs02
DELETE не позволяет использовать offset в запросе, один из вариантов решения использовать вложенный запрос
DELETE FROM table WHERE id IN(SELECT id FROM (SELECT * FROM table WHERE shop_id=12 LIMIT 100, 7000)  table)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
limit уберите
Ответ написан
kawabanga
@kawabanga
Вот еще решение простое:
1) запрос на кол-во записей, "select count(id) from table where shop_id = '12' "
2) считаем сколько записей надо удалить - count_delete = count - 100
3) делаем запрос "delete from table where shop_id = '12' limit :count_delete"
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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