我有一个查询如下所示,我想能够使用它来显示一个用户最近更改的列表。记录所在的表有时可以包含每个学生的多个更改,但我只想为每个用户显示最新的更改。
出于某种原因,当使用max(timestamp)时,它只返回一个用户条目,而不返回其他用户。如果我去掉max(时间戳),它会返回所有记录,而不仅仅是一个记录。如果我在时间戳上加上max,它有时只显示一个用户更改,有时没有。。。任何帮助都将不胜感激
SELECT a.*
FROM
( SELECT
rID
, r.studentID
, oldMethod
,newMethod
,oldSubMethod
,newSubMethod
,timestamp
,r.staffID
,type
, o.methodName oldName
, n.methodName newName
, s.firstName fName
, s.lastName lName
FROM changeReport r
LEFT
JOIN methodLookup o
ON o.methodID = r.oldMethod
LEFT
JOIN methodLookup n
ON n.methodID = r.newMethod
JOIN s s
ON s.studentID = r.studentID
LEFT
JOIN staffaccounts a
ON r.staffID = a.staffID
WHERE '$bnu' IN (newSubMethod,oldSubMethod)
AND DATE(timestamp) = CURRENT_DATE
) a
JOIN
( SELECT s.studentID
, MAX(timestamp) timestamp
FROM changeReport r
LEFT
JOIN methodLookup o
ON o.methodID = r.oldMethod
LEFT
JOIN methodLookup n
ON n.methodID = r.newMethod
JOIN s s
ON s.studentID = r.studentID
LEFT
JOIN staffaccounts a
ON r.staffID = a.staffID
WHERE '$bnu' IN (newSubMethod,oldSubMethod)
AND DATE(timestamp) = CURRENT_DATE
) b
ON b.studentID = a.studentID
AND b.timestamp = a.timestamp
1条答案
按热度按时间bqjvbblv1#
MAX
,COUNT
,MIN
,AVG
等都是mysql中的分组方法。作为一个简单的例子,如果你
您将只得到一个结果,即具有最新时间戳的结果。
如果要获取每个用户名的最新更新,应执行以下操作:
这样,您就明确表示希望对查询输出进行分组,以及希望如何对其进行分组