LEFT JOIN 复制行

问题描述 投票:0回答:2

表 1 的连接字段 (fieldY) 在该表中重复多次,尽管每一行总体上都是唯一的。

当我尝试运行

left join
时,我得到的行数比预期多 20 倍。我尝试使用解决方案这篇文章但没有运气。

我的期望是,连接将产生与没有连接的 table1 完全相同的行数。连接只会再增加一列 (

fieldX
)

有什么想法吗?

SELECT 
    table1.*, table2.fieldZ
FROM
    table1
LEFT JOIN
    table2
ON
    table2.fieldX = table1.fieldY
WHERE
    criteria1 = '01/01/2019'
AND
    criteria2 > '0'
ORDER BY
    criteria2

在下面的照片中:

fieldz
=
Routing #

fieldX
=
Bank Account #
来自表2
fieldY
=
Bank Account #
来自表1

enter image description here

*这可以加入学生证或银行账号,但问题都是一样的,因为学生证和银行账号在表1中出现了多次`

sql presto
2个回答
0
投票

Table2 必须具有表 1 的多个记录的键。 需要 1:1 才能实现您所描述的目标。


0
投票

通过此查询:

select t1.*, t2.routing 
from table1 t1 left join table2 t2
on t2.studentid = t1.studentid

或者这个:

select t1.*, t2.routing 
from table1 t1 left join table2 t2
on t2.bankaccount = t1.bankaccount

您将得到以下结果:

> studentid | bankaccount |  gpa | semester | routing
> --------: | ----------: | ---: | :------- | :------
>         1 |      123456 |      | Fall     | abc    
>         1 |      123456 |      | Spring   | abc    
>         1 |      123456 |      | Summer   | abc    
>         2 |      456789 |      | Fall     | def    
>         2 |      456789 |      | Spring   | def    
>         2 |      456789 |      | Summer   | def    
>         3 |      321654 |      | Fall     | ghi    
>         3 |      321654 |      | Spring   | ghi    
>         3 |      321654 |      | Summer   | ghi

您可以查看演示

© www.soinside.com 2019 - 2024. All rights reserved.