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)