我正在尝试从恰好存储多个状态的表中获取最后一个日期时间记录。我的 table 看起来像这样:
+---------+--------------------+-------+-------+
|status_id|status_timestamp |User id|Status |
+---------+--------------------+-------+-------+
|1 |2012-02-14 12:04:45 |2 |active |
|2 |2012-02-14 12:14:20 |2 |inactive| <-want that value only
|3 |2013-02-14 12:20:59 |3 |desact |
+---------+--------------------+-------+-------+
SELECT st.Status, st.status_timestamp
FROM status_table as st
INNER JOIN user_profile as up ON st.user_id = up.user_id
WHERE up.username = "usertest";
usertest 是 user_id 2
我尝试使用 max(st.status_timestamp) 但无法让它工作
最佳答案
一种方法在 WHERE
子句中使用相关子查询:
SELECT st.Status, st.status_timestamp
FROM status_table st INNER JOIN
user_profile up
ON st.user_id = up.user_id
WHERE up.username = 'usertest' AND
st.status_timestamp = (SELECT MAX(st2.status_timestamp)
FROM status_table st2
WHERE st2.user_id = st.user_id
);
如果您只期望返回一行,则更简单的方法是 ORDER BY
和 LIMIT
:
SELECT st.Status, st.status_timestamp
FROM status_table st INNER JOIN
user_profile up
ON st.user_id = up.user_id
WHERE up.username = 'usertest'
ORDER BY st.status_timestamp DESC
LIMIT 1;
关于mysql - 根据日期时间获取最后一个内部联接记录时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45661277/