这是我的logins
SQL 表:
id | user | time | ip
示例数据:
id | user | time | ip
1 5 1352100506 80.87.208.133
我在这个表中已经有大约 50 000 行,所以我想过滤掉它。
我不想删除旧条目,而是保留其中一些。我想要:
1) 保留每个用户使用过的每个唯一 IP
2) 保留每个此类 IP 的最新(最大)时间
所以从这个数据集中:
id user time ip
1 1 1350000000 1.1.1.1
2 1 1350000001 1.1.1.1
3 1 1350000002 1.1.1.1
4 1 1350000003 1.1.1.2
5 1 1350000004 1.1.1.3
我想要这个选择/结果:
id user time ip
3 1 1350000002 1.1.1.1
4 1 1350000003 1.1.1.2
5 1 1350000004 1.1.1.3
这是我当前的查询,但我不确定我这样做是否正确:
SELECT `id`, `user`, MAX(`time`), `ip`
FROM `logins`
GROUP BY `user`, `ip`
为什么我认为查询不正确:
因为当我做这个测试查询时:
SELECT `id`, `user`, FROM_UNIXTIME(`time`), FROM_UNIXTIME(MAX(`time`)), `ip`
FROM `logins`
WHERE `user` = 1
GROUP BY `user`, `ip`
time
和的值MAX(`time`)
不同,但id
值相同。这怎么可能?
这是我的 PMA 结果:
所以我想知道我的查询实际上返回了什么。它是否返回我想要的(每个用户的每个唯一 IP 只有一次,每个此类 IP 的最新时间)?