我有一个带有历史记录的表,该表由主表中的多个触发器发布在该表中。我想在历史记录表上创建一条select语句,在该表中,我的每条记录都由其先前的记录(由相同的LineID和最高的ActionDate标识)进行了联接,因此我可以提取这两者之间的差异。
我尝试了此操作,但是(My)SQL不允许引用JOINED子选择中的第一个“ FROM”表:where子句中的未知列h1.LineID
select h1.*, prev.* from history h1 LEFT OUTER JOIN (Select * From history h2 where h1.LineID=h2.LineID and h2.ActionDate < h1.ActionDate order by Actiondate desc limit 1 ) prev on h1.LineID=prev.LineID
我怎样才能做到这一点?
您可以使用以下命令获取对上一行的引用:
select h.*, (select h2.ActionDate from history h2 where h2.LineId = h.LineId and h2.ActionDate < h.ActionDate order by h2.ActionDate desc limit 1 ) as prev_ActionDate from history h;
如果需要完整的行,可以使用join获取数据:
join
select h.*, hprev.* from (select h.*, (select h2.ActionDate from history h2 where h2.LineId = h.LineId and h2.ActionDate < h.ActionDate order by h2.ActionDate desc limit 1 ) as prev_ActionDate from history h ) h left join history hprev on hprev.LineId = h.LineId and hprev.ActionDate = h.prev_ActionDate;