Mysql 用于检查多个数据多次出现在不同字段上的sql查询
假设我有一个记录登录日期的表,其中包含date和username列Mysql 用于检查多个数据多次出现在不同字段上的sql查询,mysql,sql,Mysql,Sql,假设我有一个记录登录日期的表,其中包含date和username列 | Date | Username | --------------------- | 09/10 | a | | 09/10 | b | | 09/10 | c | | 10/10 | b | | 10/10 | c | | 11/10 | c | | 11/10 | a | | 12/10 | b
| Date | Username |
---------------------
| 09/10 | a |
| 09/10 | b |
| 09/10 | c |
| 10/10 | b |
| 10/10 | c |
| 11/10 | c |
| 11/10 | a |
| 12/10 | b |
| 12/10 | c |
| 13/10 | a |
| 13/10 | c |
| 14/10 | a |
| 14/10 | b |
| 14/10 | c |
| 15/10 | a |
| 15/10 | b |
| 16/10 | a |
| 16/10 | b |
| 16/10 | c |
我可以知道如何查询同一天同一组(至少2个)相同用户一起登录多少次吗
结果应该告诉我:
例如,用户a b和c在3个日期(第9、14、16日)一起登录,用户a和c在(第9、11、13、14、16日)一起登录,用户b&c。。。。等等你可以做一些类似于:
Select count(username)
form yourTable
where yourDate between 2011/02/25 and 2011/02/27
下面是您可以尝试的示例:
CREATE TABLE Table1
(`Date` varchar(5), `Username` varchar(1))
;
INSERT INTO Table1
(`Date`, `Username`)
VALUES
('09/10', 'a'),
('09/10', 'b'),
('09/10', 'c'),
('10/10', 'b'),
('10/10', 'c'),
('11/10', 'c'),
('11/10', 'a'),
('12/10', 'b'),
('12/10', 'c'),
('13/10', 'a'),
('13/10', 'c'),
('14/10', 'a'),
('14/10', 'b'),
('14/10', 'c'),
('15/10', 'a'),
('15/10', 'b'),
('16/10', 'a'),
('16/10', 'b'),
('16/10', 'c')
;
Create View V_Table1 as
select * from Table1 order by date,username;
select groups,group_concat(date) as dates
from (
select date,group_concat(username) groups
from V_Table1 T
Group BY date
) T2
group by groups
order by groups
分组人是您在这里的朋友:
SELECT `date`, GROUP_CONCAT(username)
FROM logins
GROUP BY `date`
HAVING COUNT(username) > 1;
换句话说:按日期分组并打印。在这种情况下,拥有
将删除任何只有一个用户的登录日期(虽然您的示例数据中没有任何用户)。嗨,我想到了这一点,但它没有告诉我谁与谁登录,我还需要检查所有可能的用户组合,尽管我不需要结果中的日期,只是计数就可以了