我让一个JS将日志发送回PHP页面,以以下格式将条目插入MYSQL数据库:
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天等)内返回uid的最新SINGLE条目,但它永远不会返回最新条目。我目前使用的代码是:
SELECT *
FROM usertrack
WHERE ts >= NOW() - INTERVAL 43830 MINUTE
GROUP
BY uid
HAVING MAX(ts)
ORDER
BY ts DESC
但这只是随机选择一个条目,而不是最新的。
任何帮助都将不胜感激,因为我已经失去了大量的头发。
这可以通过相关子查询来完成,例如:
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