我的查询遇到以下问题:
我有两个表:
- 客户
- 订阅者
通过 customer.id=subscriber.customer_id 链接在一起
在订户表中,我有 id_customer=0 的记录(这些是电子邮件记录,没有完整的客户帐户)
现在我想显示我每天有多少个客户,有多少个 id_customer 的订阅者,以及有多少个 id_customer=0 的订阅者(我只称呼他们为电子邮件)
不知何故,我无法仅收到这些电子邮件。 也许这与没有使用正确的连接类型有关。 当我使用左连接时,我得到了适量的客户,但没有得到适量的电子邮件。当我使用内部联接时,我得到的客户数量错误。我是否正确使用了群组功能?我认为这与此有关。
这是我的查询:
` SELECT DATE(c.date_register),
COUNT(DISTINCT c.id) AS newcustomers,
COUNT(DISTINCT s.customer_id) AS newsubscribedcustomers,
COUNT(DISTINCT s.subscriber_id AND s.customer_id=0) AS emailonlies
FROM customer c
LEFT JOIN subscriber s ON s.customer_id=c.id
GROUP BY DATE(c.date_register)
ORDER BY DATE(c.date_register) DESC
LIMIT 10
;`
最佳答案
我不完全确定,但我认为在 DISTINCT s.subscriber_id AND s.customer_id=0
,它运行AND
之前DISTINCT
,所以DISTINCT
只能看到真与假。
你为什么不直接采取
COUNT(DISTINCT s.subscriber_id) - (COUNT(DISTINCT s.customer_id) - 1)?
(-1 在那里是因为 DISTINCT s.customer_id
将计为 0。)
关于mysql - 错误使用内连接函数/分组函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20692262/