mysql - 从连接返回表中的最新行

标签 mysql mariadb

我有两张 table 。考虑表 A 和表 B。

表 A 中有一个事物列表。

表 B 可能包含指向表 A 中事物的条目。

也就是说,对于表 A 中的每一行,表 B 中可能有 0 行或 n 行链接回它(通过表 B 中的某些 ID 列)。

我想要做的是运行 1 个带有某种 JOIN 的 SELECT 语句,该语句返回表 A 中所有行(所有列)和表 B 中的 1 列的列表,其中表 B 中的 1 列按 DESC 排序(该列是时间戳,我想要最近的时间戳)。

也就是说,我希望我的 SELECT 语句为表 A 中的每一行返回 1 行。结果集中的一列将是表 B 中的数据,并且它必须从最新的数据中获取数据与表 A 行对应的条目。

我真的不知道该怎么做。我什至尝试将“TableB.created_on = max(TableB.created_on)”添加到 JOIN 的 ON 子句中。

最佳答案

假设示例架构如下所示

CREATE TABLE a
    (id INT, description VARCHAR(64)); 
CREATE TABLE b
    (id INT, timestamp timestamp);

你可以做到

SELECT *,
       (SELECT MAX(timestamp) 
          FROM b 
         WHERE id = a.id) max_timestamp
FROM a

SELECT a.id, a.description, MAX(b.timestamp)
  FROM a JOIN b 
    ON a.id = b.id
 GROUP BY a.id, a.description

<强> SQLFiddle (对于两个查询)

关于mysql - 从连接返回表中的最新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16572273/

相关文章:

mysql - 多次插入同一个表

MYSQL如何将 '2013-8-21'转换为日期格式

php - 如何获取没有对的值(根据 session ID,LOGIN没有LOGOUT对)

mysql - 如何从 MySQL 中的 information_schema 获取主键索引前缀长度?

mysql - MariaDB - 在线移动/归档表

MariaDB(/usr/include/mysql 和 libmysqlclient)与(/usr/include/mariadb libmariadbclient 和 libmariadb)

php - 在mysql查询中转换字符集

php - 导致列计数与第 1 行的值计数不匹配的 SQL 语句有什么问题?

mysql - 订购 MySQL 结果

mysql - 如何在一个sql触发器中使用多个事件?