如何检查来自另一列的值是否存在于每个日期-mysql中?
我有一张桌子:如何检查来自另一列的值是否存在于每个日期-mysql中?,mysql,date,datetime,Mysql,Date,Datetime,我有一张桌子: 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日至2
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日
从3月1日到15日,我需要检查每个日期都有什么id。
i、 e哪些用户每天提交数据
到目前为止,我有这个
select submission_date, id, count(submission_id)
from submissions
group by submission_date, id
having count(submission_id) >= 1
但这仅显示日期和用户以及他们每天提交的内容数量-例如2。如果每个
id
的不同日期数等于表中的不同日期数,则必须按id
分组,并在HAVING
子句中进行检查:
select id
from submissions
group by id
having count(distinct submission_date) = (select count(distinct submission_date) from submissions)
如果没有重复的id
,提交日期
组合,您可以更改为:
having count(submission_date) = (select count(distinct submission_date) from submissions)
如果也没有null
日期:
having count(*) = (select count(distinct submission_date) from submissions)
您应该按日期分组 日期|组_CONCAT(由'id'区分'id'顺序) :--------- | :---------------------------------------- 2016-03-01 | 2 2016-03-02 | 650 2016-03-03 | 2,2697 2016-03-04 | 2697 2016-03-05 | 2 2016-03-06 | 2697 2016-03-07 | 1000 2016-03-08 | 2 2016-03-09 | 2697
dbfiddle我从未使用过group_concat。。嗯,很有趣
CREATE TABLE table1 (
`date` DATE,
`id` INTEGER
);
INSERT INTO table1
(`date`, `id`)
VALUES
('2016-03-01', '2'),
('2016-03-02', '650'),
('2016-03-03', '2'),
('2016-03-04', '2697'),
('2016-03-03', '2697'),
('2016-03-05', '2'),
('2016-03-06', '2697'),
('2016-03-07', '1000'),
('2016-03-08', '2'),
('2016-03-09', '2697');
SELECT `date`, GROUP_CONCAT(DISTINCT `id` ORDER BY `id`)
FROM table1
GROUP BY `date`
ORDER BY `date`
date | GROUP_CONCAT(DISTINCT `id` ORDER BY `id`)
:--------- | :----------------------------------------
2016-03-01 | 2
2016-03-02 | 650
2016-03-03 | 2,2697
2016-03-04 | 2697
2016-03-05 | 2
2016-03-06 | 2697
2016-03-07 | 1000
2016-03-08 | 2
2016-03-09 | 2697