左联接重复行

时间:2019-07-02 22:51:42

标签: sql presto

表1中的联接字段(fieldY)在此表中多次重复,尽管每行的总和都是唯一的。

当我尝试运行left join时,我得到的行比预期多20倍。我尝试过运气不佳的解决方案this post

我的期望是,如果没有联接,联接将产生与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中多次出现。

2 个答案:

答案 0 :(得分:0)

表2必须在多个记录中具有表1的键。需要达到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

您可以检查demo