加入表引用自身的查询

时间:2013-04-26 20:41:28

标签: sql oracle10g

我正在使用Oracle 10,但提出这个问题的最好方法是举例。

select * 
  from t1, t2
 where t1.id = t2.id
   and t1.otherID = (select max(otherID) 
                       from t2 
                      where id = THE ID FROM THE OUTER QUERY T1
                    )

我想你知道我想要去哪里。我需要在子查询中引用t1以将其加到t2的最大值。

我需要知道如何创建这样的查询。

“来自外部查询T1的ID”是我的困惑所在。

我尝试使用t1.id,但未获得结果。

1 个答案:

答案 0 :(得分:0)

尝试以下

select t1.*, t2.*
from t1
join t2 on t1.id = t2.id
join (select id, max(otherID) as max_otherID
      from t2 
      group by id
 ) a ON a.id = t1.id and a.max_otherID = t1.otherID

在连接上使用子查询通常比在where子句中使用它提供更好的性能。