我有一个JS将日志发送回PHP页面,以便以以下格式将条目插入MYSQL DB:
id ipad uid ts urlpath
1455 1.1.1.15 13 19/01/2019 07:32 http://1.1.1.151/useradmin.php
1456 1.1.1.15 13 19/01/2019 07:33 http://1.1.1.151/useradmin.php
1460 1.1.1.15 13 19/01/2019 07:37 http://1.1.1.151/useradmin.php
1461 1.1.1.15 19 19/01/2019 08:05 http://1.1.1.151/index.php
1462 1.1.1.15 19 19/01/2019 08:05 http://1.1.1.151/index.php
1463 1.1.1.15 19 19/01/2019 08:05 http://1.1.1.151/index.php
1464 1.1.1.15 13 19/01/2019 23:13 http://1.1.1.151/useradmin.php
我要执行的操作是在给定时间段内(例如30分钟,6小时,30天等)按时间戳(ts)返回uid的最新SINGLE条目 我已经尝试了几段代码,但从未返回最新条目。我目前使用的代码是:
SELECT *
FROM usertrack
WHERE ts >= NOW() - INTERVAL 43830 MINUTE
GROUP
BY uid
HAVING MAX(ts)
ORDER
BY ts DESC
但这只是选择一个随机条目,而不是最新条目。
任何帮助将不胜感激,因为我已经失去了很多头发。
答案 0 :(得分:0)
这可以通过相关子查询来完成,例如:
SELECT u.*
FROM usertrack u
WHERE NOT EXISTS (
SELECT 1 FROM usertrack u1 WHERE u1.ts > u.ts AND u1.uid = u.uid
) AND ts >= NOW() - INTERVAL 43830 MINUTE