我需要确定购买了1次以上的产品。
ERD图如下:
我写了这个查询
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)
可以,但是这段代码很棒吗?
答案 0 :(得分:-1)
分组会更好:
SELECT good_name
FROM Goods
JOIN Payments on Payments.good = Goods.good_id
GROUP BY Goods.good_id
HAVING COUNT(Payments.good) > 1
可能还需要在Payments.good
列上建立索引。
最好在表Goods
中创建另一列,该列将保存成功付款计数并在每次付款后对其进行更新。