[英]Query left join without all the right rows from B table
我有2个表,A和B。我需要选择A中的所有列+ B中的1列。 不幸的是,在联接条件下,B在A中有1行具有多行(全部相同)。
我试过了,但是例如在保持选择的同时,我无法通过左连接将A中的一行与B中的一行隔离。
我该如何查询? 在ORACLE SQL中查询
提前致谢。
这是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
。 在这种情况下,选择哪一行似乎没有什么不同。
您可以对A
所有列进行group by
,然后使用汇总(例如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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.