我有2张桌子,A和B. 我需要选择B中A + 1列的所有列。 不幸的是,B在A中有1行的多行(所有相同) 在连接条件。
我尝试但是我不能在A中将一行中的一行与左连接隔离,而保留我的选择。
我该怎么做这个查询?在ORACLE SQL中查询
提前致谢。
答案 0 :(得分:0)
这对outer apply
很有用。查询的结构如下所示:
select a.*, b.col
from a outer apply
(select top 1 b.col
from b
where b.? = a.?
) b;
通常,您只能将top 1
与order by
一起使用。在这种情况下,您选择哪一行似乎没有区别。
答案 1 :(得分:0)
您可以在group by
的所有列上A
,然后使用聚合(例如max
或min
)来选择任何相同的B值:
select a.*
, b.min_col1
from TableA a
left join
(
select a_id
, min(col1) as min_col1
from TableB
group by
a_id
) b
on b.a_id = a.id