Удалить пользователей с несколькими записями продуктов в mySQL

Имейте таблицу с именем user_products, содержащую запись для каждого продукта, лицензированного пользователем.

user_id, product_id (несколько других полей, таких как метка времени)

У меня есть 18 продуктов, но я хочу найти всех пользователей, у которых есть запись для продукта 3 И запись для продукта 4, а затем удалить запись, которая у них есть для продукта 3.


person RAD Moose    schedule 16.12.2011    source источник


Ответы (1)


DELETE 
FROM user_products AS up3
WHERE product_id = 3
  AND EXISTS 
      ( SELECT *
        FROM user_products AS up4
        WHERE up4.product_id = 4
          AND up4.user_id = up3.user_id
      )

или с JOIN:

DELETE up3
FROM user_products AS up3
  JOIN user_products AS up4
    ON up4.user_id = up3.user_id
WHERE up3.product_id = 3
  AND up4.product_id = 4
person ypercubeᵀᴹ    schedule 16.12.2011
comment
JOIN работал отлично... Я был на пути к гораздо более сложному решению. Спасибо за ответ - person RAD Moose; 17.12.2011