我认为这是一个简单的问题,但我似乎无法解决它。
我想从一个表中选择最新的结果并将其与另一个表中的单个元素连接起来。
更好地说,这是一个简单的模式:
Table 1 - Person
personId -PK - INT - AUTO ID
name - VARCHAR
Table 2 - Event
eventId - PK - INT - AUTO ID
personId - FK
timestamp - DATETIME
event - ENUM ('Went Out', 'Came back')
我想做的是返回所有人员的列表以及每个人执行的最新操作
示例结果:
name| personId | timestamp | eventId | event
bob | 1 | 2011-08-7 3 | 'went out'
我做了一个连接两个表的简单查询,然后按 personId 分组并按时间戳排序,但返回的结果始终是此人的第一个操作,而不是他们的最新操作。
有什么想法吗?
最佳答案
SELECT
t1.Name,
t1.PersonId,
t2.TimeStamp,
t2.EventId,
t2.Event
FROM Table1 t1
INNER JOIN Table2 t2 ON t2.PersonId = t1.PersonID
INNER JOIN (SELECT
PersonId,
MAX(TimeStamp) as LastEventDateTime
FROM Table2
GROUP BY PersonID) LE
ON LE.PersonID = t2.PersonID
AND LE.LastEventDateTime = t2.TimeStamp
关于mysql - 从 SQL 中选择最佳结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7821739/