@beduin01

Оставит ли следующий запрос уникальные записи?

Что-то запутался. Есть таблица, в ней есть уникальные записи, а есть дубликаты
DELETE FROM lots 
WHERE id NOT IN 
   (SELECT DISTINCT max(id) 
    FROM lots 
    GROUP BY lotNumber, purchaseNumber);

Нужно удалить дубликаты по полям: lotNumber, purchaseNumber

У меня есть чувство, что этот запрос удалит и все уникальные записи т.к. они попадут в условие NOT IN. Я прав?
  • Вопрос задан
  • 121 просмотр
Пригласить эксперта
Ответы на вопрос 2
DanArst
@DanArst
Гриффиндор в моде при любой погоде!
Если id - это уникальный идентификатор записи, то DISTINCT тут не нужен.
DELETE FROM lots 
WHERE id NOT IN
   (SELECT MAX(id)
   FROM lots
   GROUP BY lotNumber, purchaseNumber);


Таким образом из дубликатов одной записи останется только последняя, т.е с максимальным id, если хотите оставить первую, то замените MAX на MIN.
Ответ написан
Комментировать
rozhnev
@rozhnev Куратор тега SQL
Fullstack programmer, DBA, медленно, дорого
delete t.*
from t
left join t t1 on t.a = t1.a and t.id > t1.id
where t1.id is not null;

https://sqlize.online/sql/mysql57/4a73682eca03657a...
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы