【发布时间】:2016-08-22 16:14:58
【问题描述】:
我有以下 2 个表格:
Table1 Table2
ID IP Timestamp IP Login User
1 10.2.4.8 02/04/2016 9.10 10.2.4.8 01/04/2016 8.20 Green
2 10.2.4.8 02/04/2016 13.50 10.2.4.8 01/04/2016 8.50 Blue
3 10.20.3.5 02/04/2016 13.59 10.2.4.8 02/04/2016 9.20 Red
4 10.2.4.8 03/04/2016 10:25 10.20.3.5 04/04/2016 11:25 Blue
5 10.20.3.5 04/04/2016 11:25 10.20.3.5 01/04/2016 10:25 Yellow
我想将 Table1 中的时间戳与来自 Table2 的最近一次登录匹配,其中 IP 相同,以便获取进行登录的用户。所以结果应该是这样的:
ID IP Timestamp User
1 10.2.4.8 02/04/2016 9.10 Blue
2 10.2.4.8 02/04/2016 13.50 Red
3 10.20.3.5 02/04/2016 13.59 Yellow
4 10.2.4.8 03/04/2016 10:25 Red
5 10.20.3.5 04/04/2016 11:25 Blue
我正在使用 SQL。感谢您的帮助
我想出的解决方案是这样的:
SELECT T1.ID, T1.IP, T2.user, MAX (T2.Login) AS Ultimo_Timestamp, T1.timestamp FROM Table2 T2, Table1 T1
WHERE T2.IP = T1.IP
AND T2.Login < T1.timestamp
GROUP BY T1.ID, T1.IP, T2.user, T1.timestamp
ORDER BY T1.ID;
我不确定它是否正确,以及是否有更好的解决方案。谢谢
【问题讨论】:
-
您将时间戳存储在适当的数据类型下,对吗?很好,所以向我们展示你的尝试。
-
嗨草莓,我想出了这个代码,但我真的不确定它是否可以。 : SELECT T1.ID, T1.IP, T2.user, MAX (T2.Login) AS Ultimo_Timestamp, T1.timestamp FROM Table2 T2, Table1 T1 WHERE T2.IP = T1.IP AND T2.Login
标签: sql ms-access join group-by multiple-tables