1

我正在使用 mysql,我的表 A 包含帐户信息,表 B 包含人口统计信息,例如出生日期、地址和保险单信息(主要、次要)。表 B 的保险字段已更新,所以我想要最新的表 B 中的数据。表 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'
4

3 回答 3

1

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

然后,您可以通过与 B 的双连接来获取数据,其中第二个连接用于查找B大于最大值的行uniqueid(即什么都没有)。

SELECT
  A.num, A.openingamount, A.action, A.current_status,
  B.dob, B.primary_policy, B.secondary_policy 
FROM A 
  LEFT JOIN B ON (B.a_ponum = A.ponum) 
  LEFT JOIN B2 ON (B2.a_ponum = A.ponum AND B2.uniqueid > B.uniqueid) 
WHERE
  B2.uniqueid IS NULL
  AND A.num ='123'
于 2012-11-02T02:30:59.923 回答
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
于 2012-05-11T07:15:06.427 回答
0

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

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

TIMESTAMP 的自动初始化和更新

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

于 2012-05-11T07:51:44.897 回答