Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 用于检查多个数据多次出现在不同字段上的sql查询_Mysql_Sql - Fatal编程技术网

Mysql 用于检查多个数据多次出现在不同字段上的sql查询

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列

| 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;

换句话说:按日期分组并打印。在这种情况下,
拥有
将删除任何只有一个用户的登录日期(虽然您的示例数据中没有任何用户)。

嗨,我想到了这一点,但它没有告诉我谁与谁登录,我还需要检查所有可能的用户组合,尽管我不需要结果中的日期,只是计数就可以了