Sql )
Sql ),sql,mysql,Sql,Mysql,)
)<3已被删除,因为我看不出它们为什么不会被删除?是的,原始查询运行良好,删除了所有内容,这就是为什么当您更改它时,我运行了它,它没有删除任何内容。无论如何,谢谢你,我将写一个单独的查询,从数据库中删除没有相关评级的产品,谢谢你的时间。
SELECT AVG(pr.rating) AS rating_average
FROM products p
INNER JOIN product_ratings pr
ON pr.product_id = p.product_id
GROUP BY p.product_id
HAVING AVG(pr.rating) < 3
products
--------
product_id [PK] | link | ...
product_ratings
---------------
rating_id [PK] | rating | product_id
ALTER TABLE product_ratings ADD CONSTRAINT fk_prodratings_prods
FOREIGN KEY (product_id) REFERENCES products(product_id)
ON DELETE CASCADE;
DELETE FROM products p
WHERE (SELECT AVG(pr.rating)
FROM product_ratings pr
WHERE pr.product_id = p.product_id) < 3;
DELETE products,
product_ratings
FROM products,
product_ratings
WHERE product_ratings.product_id = products.product_id
AND product_ratings.product_id IN
(SELECT product_id
FROM (SELECT p.product_id
FROM products p
LEFT JOIN product_ratings pr
ON pr.product_id = p.product_id
GROUP BY p.product_id
HAVING COALESCE(AVG(pr.rating), 0) < 3) T)