我在这里看到了类似的问题,但没有一个能帮我解决问题.
我有一个表让我说测试(使用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(日期)没有给我每个日期的最新日期时间.
这是我的查询:
SELECT *
FROM Test
WHERE TUserID = 123
GROUP BY TData
ORDER BY TViewedAt
返回2行,其中没有一行是最新的.
非常感谢