MYSQL 根据条件删除查询

MYSQL Delete Query based on condtion

我有一个 table 产品 我还有另一个 table 评级 我想删除 3 个或更多评分低于 3 的产品。

这是我试过的

DELETE p  FROM product p 
JOIN rating r ON r.produits_id = p.id  
IN
  (SELECT produits_id 
  FROM rating 
WHERE rating.score < 3
GROUP BY rating.produits_id  
HAVING COUNT(*)  > 2 )

您可以只在 where 子句中使用 in

DELETE p 
    FROM product p 
    WHERE p.id  IN (SELECT r.produits_id 
                    FROM rating r
                    WHERE r.score < 3
                    GROUP BY r.produits_id  
                    HAVING COUNT(*)  >= 3
                   );

您应该将 table 直接加入 returns 来自 rating 的 ID 的查询:

DELETE p  
FROM product p 
JOIN (
  SELECT produits_id 
  FROM rating 
  WHERE score < 3
  GROUP BY produits_id  
  HAVING COUNT(*)  > 2
) r ON r.produits_id = p.id