我在这里看到了类似类型的问题,但没有一个对我的情况有所帮助。
我有一张表可以说测试(使用 mysql MyISAM)
测试具有以下架构:
TID INT PRIMARY KEY AUTO_INCREMENT
TData varchar (data that i want to select)
TUserID INT (this will be joined with users table, same users can have many records here)
TViewedAt DATETIME (records each time user visits page, datetime format)
现在,每次当前登录的用户访问测试页面时,它都会在此表中添加记录,记录访问者的用户 ID,用户访问的一些数据和日期和时间,每次都会自动递增 TID。
然后我有一个后端管理页面,我可以在其中查看哪个用户访问了测试页面,访问了多少次,数据和时间。基本上它是一个包含 20-25 个最新行列表的表格。我的查询应该只为每个数据选择一条记录。用户的数据可以相同,但时间不同,但我只想为每个用户选择一个最新的数据。因此,如果用户访问测试页面 10 次,则有 10 条记录进入数据库,但表中仅显示 1 条最新记录。如果另一个用户访问页面 15 次,它会显示第二个用户的 1 条记录,这又是最新的,所以现在我们总共有 2 行显示在表格上。我让一切正常工作,但出于某种原因 GROUP BY 并且 MAX(date) 没有给我每个日期的最新日期时间。
这是我的查询:
SELECT *
FROM Test
WHERE TUserID = 123
GROUP BY TData
ORDER BY TViewedAt
返回 2 行,其中所有行都不是最新的。
多谢