Как удалить все повторяющиеся изображения, оставив только первое? - PullRequest
0 голосов
/ 12 марта 2020

У меня есть эта таблица:

product_images

id - product_id - image - main_image - date

image:

enter image description here

Эта таблица содержит полное изображение моих продуктов.

Что мне нужно сделать запрос в SQL, чтобы удалить все дубликаты product_id и сохранить самый первый, который на изображении выше, который содержит изображение 2019/03/9g.jpg

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Попробуйте этот запрос. Удаляемые изображения не относятся к min(id) из product_images, сгруппированным по product_id.

Изображения являются дубликатами, если они имеют одинаковые product_id, но не одинаковые id, мы хотим сохранить только элемент минимального идентификатора всех изображений, сгруппированных по product_id.

DELETE FROM product_images
WHERE id NOT IN (SELECT min(id)
                 FROM product_images
                 GROUP BY product_id);
1 голос
/ 12 марта 2020

используйте, где не существует для этого:

Ниже приведен список для удаления

select *
from product_image a
where exists
(
select 1 from product_image b 
where a.product_id = b.product_id and a.id < b.id
)

Ниже приведены все, кроме первого, для каждого product_id

    Delete From product_images 
    where id not in
    ( 
    select id from
    (
      select id 
      from product_images a
      where not exists
      (
         select 1 from product_images b 
         where a.product_id = b.product_id and a.id > b.id
      )
    )a
   ) 

Fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...