首页 > 解决方案 > 如何检查每个日期-mysql中是否存在另一列的值?

问题描述

我有一张桌子:

date       id    count(sub_id)
2016-03-01 2       1 
2016-03-02 650     1 
2016-03-03 2       1 
2016-03-04 2697    2 
2016-03-05 2       4 
2016-03-06 2697    3
2016-03-07 1000    2 
2016-03-08 2       3 
2016-03-09 2697    3

日期为 2016 年 3 月 1 日至 2016 年 3 月 15 日。

我需要检查每个日期都有什么 id - 从 3 月 1 日到 15 日。即用户每天提交的数据

到目前为止我有这个

select submission_date, id, count(submission_id) 
from submissions  
group by submission_date, id
having count(submission_id) >= 1

但这仅显示日期和用户以及他们每天提交的数量 - 例如 2。

标签: mysqldatedatetime

解决方案


如果每个日期的不同日期数等于表中的不同日期数,则必须group by id检查HAVING子句:id

select id
from submissions  
group by id
having count(distinct submission_date) = (select count(distinct submission_date) from submissions)

如果没有重复idsubmission_date您可以更改为:

having count(submission_date) = (select count(distinct submission_date) from submissions)

如果也没有null日期:

having count(*) = (select count(distinct submission_date) from submissions)

推荐阅读