【问题标题】:issue with getting the last inner join record base on datetime [duplicate]基于日期时间获取最后一个内部连接记录的问题[重复]
【发布时间】:2017-08-13 14:13:31
【问题描述】:

我正在尝试从恰好存储多个状态的表中获取最后一个日期时间记录。我的桌子是这样的:

 +---------+--------------------+-------+-------+
 |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) 但我无法让它工作

【问题讨论】:

  • 这两个问题在我进行研究时都不知道存在,但如果你想删除它,我很好。

标签: mysql


【解决方案1】:

一种方法在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 BYLIMIT

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;

【讨论】:

  • 如果第一种方法同时发布,是否可以给我多个值?
  • @JohnLaimuin 。 . .是的,直到您使用的时间戳列的精度。
猜你喜欢
  • 2013-05-09
  • 2018-04-09
  • 2017-04-13
  • 2015-05-02
  • 2021-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-31
相关资源
最近更新 更多