MySQL在同一天查找具有相同ip的所有用户

时间:2015-12-28 09:39:05

标签: mysql

我有一个用户登录历史记录表,如下所示:

+----------+-------------+------+-----+---------+----------------+
| Field    | Type        | Null | Key | Default | Extra          |
+----------+-------------+------+-----+---------+----------------+
| id       | int(11)     | NO   | PRI | NULL    | auto_increment |
| username | varchar(16) | NO   |     | NULL    |                |
| ip       | varchar(15) | NO   |     | NULL    |                |
| date     | datetime    | NO   |     | NULL    |                |
+----------+-------------+------+-----+---------+----------------+

我试图获取一个查询,可以选择在同一天共享同一个ip的所有用户。

根据评论中的要求,我在运行此查询时期望此结果

username        ip              date

// This 3 are linked (same ip, same day, distinct username)
Test1           10.10.20.20     28/12/2015 10:50:30
AnotherUser     10.10.20.20     27/12/2015 14:20:20
User3           10.10.20.20     28/12/2015 22:50:10

// This 2 are linked (same ip, same day, distinct username)
User159         30.10.20.20     28/12/2015 10:50:30
User156         30.10.20.20     28/12/2015 13:45:30

提前感谢您提供的任何帮助。

2 个答案:

答案 0 :(得分:3)

试试这个:

SELECT ip, GROUP_CONCAT(DISTINCT username), DATE(`date`)
FROM myTable
GROUP BY ip, DATE(`date`)
HAVING COUNT(DISTINCT username) > 1

旁注:

Date是MYSQL中的 keyword 。因此,请尽量避免将其作为列名。

答案 1 :(得分:0)

使用这种方式:

SELECT `ip`, GROUP_CONCAT(`username` SEPARATOR ' \t '), `date`
FROM Table
GROUP BY `date`, `ip`