我希望能够返回名为“completed_by”的列的值,其中 completed_on 是最大值
我有下表
CREATE TABLE activity(
id int(11) AUTO_INCREMENT,
completed_on datetime,
completed_by int(11),
activity_code int(11)
)
如果我有
100, '2013-07-01 00:00:00', 11, 20
150, '2013-01-01 00:00:00', 12, 20
我想返回值 11。注意这里唯一给出的值是 activity_code。
逻辑应返回 completed_by 最后一次完成 activity_code = 20。我应该只返回 1 行
这是我所做的,但不确定这是否是一个好的查询,因为表事件有很多记录。
SELECT
completed_by,
MAX(completed_on ) AS completed_on
FROM activity
WHERE activity_code = 5 LIMIT 1
最佳答案
一条记录的最大值:
SELECT * FROM activity
WHERE activity_code = 20
ORDER BY completed_on DESC LIMIT 1
所有事件代码的最大值:
SELECT * FROM activity a
WHERE NOT EXISTS(SELECT ID
FROM activity b
WHERE a.activity_code = b.activity_code
AND b.completed_on > a.completed_on)
关于mysql - 如何通过 MySQL 返回基于上次事件日期的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665758/