SELECT внутри запроса DELETE одной таблицы. Как правильно?

Делал запрос типа этого:
DELETE FROM `table` WHERE (SELECT COUNT(*) FROM `table` WHERE `idu` = 1) > 5 AND `idu` = 1 LIMIT 3

Выдает ошибку "#1093 - Не допускается указание таблицы 'table' в списке таблиц FROM для внесения в нее изменений"
Как правильно?
Вообще нужно оставить три записи с одним идентификатором "idu", остальные старые удалить.
5dbc632b19470054721173.png
  • Вопрос задан
  • 1165 просмотров
Пригласить эксперта
Ответы на вопрос 1
@immelnikoff
Изучаю БД
Для MySQL 5.7 и MySQL 8.0:
Запрос
DELETE FROM `table` WHERE `idu` = 1 AND `time_end` NOT IN
(SELECT `time_end` FROM `table` ORDER BY `time_end` DESC LIMIT 3)

удалит из таблицы все записи с `idu` = 1 кроме трех последних.
Для MySQL 5.6 и более ранних:
DELETE FROM `table` WHERE `idu` = 1 AND `time_end` <
(SELECT * FROM (SELECT `time_end` FROM `table` ORDER BY `time_end` DESC LIMIT 3) as T
ORDER BY `time_end` LIMIT 1)
Ответ написан
Ваш ответ на вопрос

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

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