首页 > 解决方案 > 将两个顺序 SQL 查询合并为单个 SQL 查询以进行 max 和 join

问题描述

我有两个按顺序执行的 SQL 查询。

  1. select max(last_updated_date) as recent_date
        from TRANSACTION where quality='P' and TYPE='Car'
    
  2. select * from CAR 
    JOIN
    (
    select TRAN_ID,LAST_UPDATED_DATE from TRANSACTION 
    ) on TRANSACTION.TRAN_ID=CAR.ID and TRANSACTION.LAST_UPDATED_DATE=recent_date
    

我想通过单个查询来实现相同的结果。我什么都想不出来。

标签: mysqlsqljoinmergemax

解决方案


使用可以使用标量子查询

select * 
from CAR 
JOIN
(
   select TRAN_ID,LAST_UPDATED_DATE 
   from TRANSACTION 
) t on t.TRAN_ID=CAR.ID and t.LAST_UPDATED_DATE=(select max(last_updated_date)
                               from TRANSACTION 
                               where quality='P' and TYPE='Car')

推荐阅读