mysql - 根据日期时间获取最后一个内部联接记录时出现问题

标签 mysql

我正在尝试从恰好存储多个状态的表中获取最后一个日期时间记录。我的 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 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;

关于mysql - 根据日期时间获取最后一个内部联接记录时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45661277/

相关文章:

PHP/MySQL : getting value from primary column

mysql - 如何组织 MySQL 数据库来存储此 XML 数据

Android - 配置 SQLite 表以满足我的需求

java - 在 hibernate 中使用带有条件的联接和子查询

MySQL复制Slave_SQL_Running插入数据后失败

mysql同一列上的多个案例

mysql - COUNT 查询中的 SUBSTRING 未按预期工作

php - 格式化 MySQL 查询的结果,就好像它是从控制台运行的一样

mysql - 如何让kamailio使用不同的mysql peer users表

sql - 使用 JDBC 在 Sql 中查询