mysql - 错误使用内连接函数/分组函数?

标签 mysql sql

我的查询遇到以下问题:

我有两个表:

  1. 客户
  2. 订阅者

通过 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/

相关文章:

php - mysql_query 自动执行但在 onClick 时不执行

mysql - SQL查询: join

sql - PostgreSQL - 将每个表转储到不同的文件中

mysql - 删除某些字段的重复项

sql - 如何在分页结果 View 中获取总结果数?

sql - 将一个表的行转换为 json 并将其添加到另一个表 PostgreSQL

mysql - 评估 MySQL 存储过程中的字符串

php - fetchColumn() 不将结果保存到变量

MYSQL查询速度更快

mysql - SQL Join 3个表输出名字