选择max(id)但需要更多行数据

时间:2012-12-16 18:37:54

标签: mysql sql

我使用以下内容选择用户添加的最后一个事件

SELECT MAX(user_event_id) from user_events where user_id = 63

在这一行上还有一列event_title但如果我尝试:

SELECT MAX(user_event_id), event_title from user_events where user_id = 63

返回的event_title与user_event_id

不对应

是否可以返回最后一个user_event_id和event_title?

2 个答案:

答案 0 :(得分:4)

此解决方案不需要ORDER BY,如果表很长,它将运行缓慢。

SELECT user_event_id, event_title
FROM user_events
WHERE user_event_id = (SELECT MAX(user_event_id)
                       FROM user_events
                       WHERE user_id = 63)
AND user_id = 63   -- This clause not needed if user_event_id is unique

答案 1 :(得分:2)

SELECT user_event_id, event_title 
from user_events 
where user_id = 63
order by user_event_id desc
limit 1

大多数DBMS不允许将 event_title 包含在字段列表中(如作者所做),因为它不用于分组而不是聚合函数。但是mysql确实会产生意想不到的结果。

<强>更新: 如果有多个记录具有相同的用户min_user_event_id,则此查询仅返回一条记录。所以它解决了与Barry Brown的解决方案略有不同的问题 - 它以相同的user_event_id返回所有记录。