【问题标题】:Select most recent rows from inner joined tables in MySQL从 MySQL 中的内部连接表中选择最近的行
【发布时间】:2015-10-29 06:12:40
【问题描述】:

我想从每个内部连接的表中获取最新的行。两个表都有一个timestamp 字段。以下是我到目前为止所拥有的。但它只针对table1table2怎么样?

SELECT
`table1`.`fieldX`, 
`table2`.`fieldY`
FROM `db`.`table1`
INNER JOIN `db`.`table2`
ON `table1`.`id` = `table2`.`id` 
WHERE `table1`.`id` = ?
ORDER BY `table1`.`timestamp`
DESC LIMIT 1

表1

row_id
id
fieldX
timestamp

表2

row_id
id
fieldY
timestamp

两个表都可以有重复的 ID。它的设计目的是存储旧版本的数据条目。

例如:table1 可以有 3 行具有相同的 id,而table2 可以有 2 行具有相同的 id。我想从两个表中获取最新的行。

【问题讨论】:

  • 能展示一下表格结构吗?
  • @ArunKrish 查看编辑。谢谢

标签: mysql sql-order-by inner-join


【解决方案1】:

如果你想要 table2 的最近记录,可以这样使用它

SELECT SUBSTRING_INDEX(GROUP_CONCAT(t1.fieldX ORDER BY t1.timestamp DESC),',',1) as field_x, SUBSTRING_INDEX(GROUP_CONCAT(t2.fieldY ORDER BY t2.timestamp DESC),',',1) as field_y
FROM table1 t1
JOIN table2 t2 ON(t2.id = t1.id)
GROUP BY t1.id
ORDER BY t1.timestamp

【讨论】:

    猜你喜欢
    • 2012-06-10
    • 2020-05-07
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-08
    • 1970-01-01
    • 2013-10-11
    相关资源
    最近更新 更多