2011-03-17 104 views
0

我有两个表,一个存放与某些数据相关的记录,另一个存放第一个表的历史数据。从innodb中的另一个表加入第一个有效行

对于主表的每一行,历史表可能有多行,我想要从主表中取出一个或多个从主表中的最新记录时加入历史表中的最新记录。

我已经尝试加入使用ID的子组查询,这没有奏效,我不能使用限制,因为我想选择多个记录。

+0

支持MySQL子查询如下?: ... MAIN_TABLE INNER JOIN historical_data ON(main_table.col =(SELECT最新的历史数据ID))... – 2011-03-17 14:25:57

回答

2

假设历史表具有PK由原始ID和时间戳的

SELECT table.*, ht1.* 
FROM table INNER JOIN historical_table ht1 
    ON table.id = ht1.id 
    LEFT JOIN historical table ht2 
    ON ht1.id = ht2.id AND ht1.timestamp < ht2.timestamp 
WHERE ht2.timestamp IS NULL 
逻辑

主要部分是选择行对于其中不存在新记录(ht2.timestamp为null)

这是一种常见的MAX-每组这样的问题(也有其他的方式去做)

+0

干杯!那有效,如果有一点令人难以置信:) – Sam 2011-03-17 14:47:12

1

一种方法去做:

select record.id 
(select history.id from history where history.record_id = record.id order by history.id desc limit 1) as history_id 
from record 

如果你想要完整的查询,你可以使用该查询中的id作为子查询。其他很多方式去这太:-)

相关问题