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
我有一个 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