繁体   English   中英

基于相关子查询,SQL连接表

[英]Join Tables Based on Correlated Subquery, SQL

我需要加入两个如下所述的表:

Table1:
ID  Date       Info1
1   1/29/2011     i10
1   1/30/2011     i11


Table2:
ID  Date       Info2
1    1/31/2011   i2

我想将ID,月,年确定的表2中的记录加入表1中由相同ID,月,年标识的记录,但使用最后一个可用记录日期作为加入记录。 因此,例如,在上面的数据中,我将表2中的记录加入表1中的第二条记录,因为它们在ID,月,年和表1的记录2中匹配具有最大的可用日期(ID,月,年)组合。 正确的结果是:

ID日期Info1 Info2

1 1/30/2011 i11 i2

到目前为止我提出的SQL代码非常复杂。 请提出建议。 我正在使用MySQL。

[我想] ...使用最后一个可用的记录日期作为加入记录

首先用派生表解决这个问题。 假设ID, Date是唯一的,那么您可以轻松按ID分组并获取MAX日期。

SELECT
   T1.*,
   T2.*
FROM Table1 as T1
JOIN (
   SELECT 
      ID, MAX(Date) as Date
   FROM Table1
   GROUP BY 
      ID
) as Last ON
   T1.ID = Last.ID
   AND T1.Date = Last.Date
LEFT OUTER JOIN Table2 as T2 ON
   T1.ID = Last.ID
   AND MONTH(T1.Date) = MONTH(T2.Date)
   AND YEAR(T1.Date) = YEAR(T2.Date)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM