Mysql 如何提出这个问题?
让我们假设我们有表任务包含Mysql 如何提出这个问题?,mysql,join,group-by,Mysql,Join,Group By,让我们假设我们有表任务包含 user_id date 1 2015-01-01 1 2015-01-01 1 2015-01-02 2 2015-01-03 如何显示如下所示的数据 user_id count date 1 2 2015-01-01 1 1 2015-0
user_id date
1 2015-01-01
1 2015-01-01
1 2015-01-02
2 2015-01-03
如何显示如下所示的数据
user_id count date
1 2 2015-01-01
1 1 2015-01-02
1 0 2015-01-03
2 0 2015-01-01
2 0 2015-01-02
2 1 2015-01-03
如果零很重要,则可以执行以下操作:
select
user_id_date_crossjoin.user_id,
user_id_date_crossjoin.`date`,
coalesce(`count`, 0) as `count`
from
(select
user_id,
`date`
from
(select distinct user_id from tasks) all_userids,
(select distinct `date` from tasks) all_userid_dates
) user_id_date_crossjoin
left outer join
(select
user_id,
count(*) as `count`,
`date`
from tasks
group by user_id, `date`) user_id_date_counts
on user_id_date_crossjoin.user_id = user_id_date_counts.user_id
and user_id_date_crossjoin.`date` = user_id_date_counts.`date`
请参见如果零计数很重要,那么您似乎需要一个包含所有唯一用户的表。你有吗?你没有主键,到时候可能会有问题。我很高兴听你这么说若你们并没有得到一个更棒的解决方案,你们能接受它作为一个答案吗?我想在应用层做这件事,那个么对于大数据的查询可能会很慢,这是有意义的,@OmarMakled。我希望我已经回答了在应用层做这件事。那就太好了。这就是生活。