Mysql 需要通过查看事务表中的日期并更新主表来更新具有上次\u事务\u类型的表

Mysql 需要通过查看事务表中的日期并更新主表来更新具有上次\u事务\u类型的表,mysql,Mysql,我有两张桌子 事务日志 -trans_id(PK) -policy_number (foreign key) -payment type -amount -Date(DateTime) 总政策 - policy_number(PK) - last_trans_type - and some other data 我需要获得每个保单编号的最后付款类型,并在主保单表中使用日期更新它 我想尝试通过像按日期排序并将其限制为1或者我需要使用max(date)来获取最后一个日期。但我不知道该怎么做,因

我有两张桌子

事务日志

-trans_id(PK)
-policy_number (foreign key)
-payment type
-amount
-Date(DateTime) 
总政策

- policy_number(PK)
- last_trans_type
- and some other data
我需要获得每个保单编号的最后付款类型,并在主保单表中使用日期更新它

我想尝试通过像按日期排序并将其限制为1或者我需要使用max(date)来获取最后一个日期。但我不知道该怎么做,因为它可能需要一个子查询

mysql


上述说法行不通。我希望能找到解决办法。我打算查找使用的最新付款类型,并将主保单中的最后一个交易类型设置为使用的最后一个类型。

您可以使用两个表之间的内部联接和按保单编号的最大日期组的子查询

UPDATE Master_policy m
INNER JOIN Transaction_log log ON m.policy_number = log.policy_number 
INNER JOIN  (
  Select policy_number, max(date) max_date
  FROM Transaction_log
  GROUP BY policy_number
) t on t.policy_number = m.policy_number 
  AND log.date = t.max_date  
set m.last_trans_type = log.last_trans_type 

您可以在两个表之间使用一个内部联接,并根据策略号对子查询max date group

UPDATE Master_policy m
INNER JOIN Transaction_log log ON m.policy_number = log.policy_number 
INNER JOIN  (
  Select policy_number, max(date) max_date
  FROM Transaction_log
  GROUP BY policy_number
) t on t.policy_number = m.policy_number 
  AND log.date = t.max_date  
set m.last_trans_type = log.last_trans_type 

如果您可以为表提供虚拟数据和更好可视化的预期结果,这将非常有用。如果您可以为表提供虚拟数据和更好可视化的预期结果,这将非常有用