繁体   English   中英

查询左联接而没有B表中的所有右行

[英]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 1order by 在这种情况下,选择哪一行似乎没有什么不同。

您可以对A所有列进行group by ,然后使用汇总(例如maxmin )来选择任何相同的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.

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