从MySQL中的内连接表中选择最近的行

时间:2015-10-29 06:12:41

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

我想从每个内连接表中获取最新的行。两个表都有一个timestamp字段。以下是我到目前为止的情况。但它只针对table1 table2

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 目标
row_id
id
fieldX
timestamp

表1

row_id
id
fieldY
timestamp

表2

table1

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

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

1 个答案:

答案 0 :(得分:0)

如果你想从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