Как в SQL таблице `upgrades` удалить все элементы, у которых `first_item_id` не уникальный?
Задача придельно простая, но решение не однозначное, спросил у нейросети, несколько раз и у каждого запроса было разное количество затронутых строк
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Обычно используется что-то типа такого, если правильно помню:
delete from upgrades as t1
where exists(
select * from upgrades as t2
where t1.first_item_id=t2.first_item_id
and t1.id>t2.id)
Это на случай, если нужно удалить не все такие элементы и оставить один из них (самый первый по id
).
А если прямо все такие удалить, то что-то типа:
delete from upgrades
where first_item_id in
(select first_item_id from upgrades
group by first_item_id
having count(*)>1)