左边加入的最新记录

时间:2012-05-11 07:09:59

标签: mysql

我正在使用mysql,我有表A有帐户信息,B表有人口统计信息,如出生日期,地址和保险单信息(小学,中学)。表B的保险费用已更新,所以我想要来自表B.Table B的最新数据没有任何日期。那么我如何从B获得最近的记录,以后再加入A.

select  
   A.num,
   A.openingamount,
   A.action,
   A.current_status,
   B.dob,
   B.primary_policy,
   B.secondary_policy 
from A 
left outer join B 
    on (B.uniqueid = A.ponum) 
where A.num ='123'

3 个答案:

答案 0 :(得分:0)

如果您没有日期列,则需要增加列:

select  
   A.num,
   A.openingamount,
   A.action,
   A.current_status,
   B.dob,
   B.primary_policy,
   B.secondary_policy 
from A 
left outer join B 
    on (B.uniqueid = A.ponum) 
where A.num ='123'
order by B.increment_id desc

答案 1 :(得分:0)

您还可能想要添加自动更新的TIMESTAMP字段 -

ALTER TABLE B
  ADD COLUMN ts
    TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

Automatic Initialization and Updating for TIMESTAMP

然后使用此字段查找最新记录。

答案 2 :(得分:0)

juergen d在上面的eir评论中是正确的,声明你需要表B中的一些有序列来确定最新的。如果B.uniqueid是自动递增列,那么您可以使用它;如果不是那么你需要添加一个新的列来订购B.

然后,您可以使用双连接获取数据到B,其中第二个连接用于查找大于B的{​​{1}}行(即查找没什么)。

uniqueid