使用join语句防止mysql组中的重复

时间:2012-11-17 19:10:19

标签: mysql join group-by

我遇到的问题不是新问题,但我无法弄清楚如何得到我想要的答案。这可能是我想念的简单事情

使用mysql 5.5,我有2个表,'referrals'和'status'。我想计算已被取消的推荐,按appt_date分组:

SELECT SUM(1) AS count, appt_date FROM referrals
GROUP BY appt_date
JOIN status ON referrals.id=status.referral_id
WHERE status.status_name="cancelled"

这个工作正常,直到我有一个被取消两次的推荐。换句话说,状态表中具有匹配的referral_id的2行的给定ID的引用将被计算两次。

在此处进行联接操作时,如何仅对每个推荐记录计数一次?

编辑: 我真正的问题应该是:

SELECT SUM(quantity) AS count, appt_date FROM referrals
GROUP BY appt_date
JOIN status ON referrals.id=status.referral_id
WHERE status.status_name="cancelled"

因为每个推荐都可以有自己的数量。

2 个答案:

答案 0 :(得分:2)

尝试将计数更改为计数(DISTINCT ID)

答案 1 :(得分:1)

所以伯爵只是一个标签,我应该看到:)

诱惑是做SUM(DISTINCT数量),但显然会删除欺骗“数量”,这不是你想要的。看起来您需要加入派生的选择表。看看这个......

http://www.sqlteam.com/article/how-to-use-group-by-with-distinct-aggregates-and-derived-tables