Mysql 识别购买超过1次的产品
我需要确定购买超过1次的产品 ERD图如下所示: 我写了这个查询Mysql 识别购买超过1次的产品,mysql,sql,Mysql,Sql,我需要确定购买超过1次的产品 ERD图如下所示: 我写了这个查询 SELECT DISTINCT good_name FROM Goods JOIN Payments on Payments.good = Goods.good_id WHERE good in (SELECT good FROM (SELECT good
SELECT DISTINCT good_name
FROM Goods
JOIN Payments
on Payments.good = Goods.good_id
WHERE good in (SELECT good
FROM (SELECT good
, COUNT(good) as c
FROM Payments
GROUP
BY good) as a
WHERE c > 1)
它可以工作,但这段代码很棒吗?分组会更好:
SELECT good_name
FROM Goods
JOIN Payments on Payments.good = Goods.good_id
GROUP BY Goods.good_id
HAVING COUNT(Payments.good) > 1
也许你还需要一个付款索引。好的专栏
最好在表Goods中创建另一列,该列将保存成功付款计数,并在每次付款后更新该列。选择g.good\u name作为good\u name,count*as purchase\u count from Goods g left join payments p on p.good=g.good\u id group by 1 have purchave\u count>1;欢迎来到SO。请看:只有_FULL_GROUP_BY将使您的查询无效。对于MySQL 5.7.5及更高版本,这是不正确的。