SQL连接左右

时间:2016-11-10 11:03:23

标签: php mysql sql

这是我的疑问:

select distinct * 
from purchase_records a 
inner join purchase_items b on a.id = b.purchase_id 
left join transactions c on a.id= c.purchase_id

它从两个表中获取记录。从左边开始,它获得一条记录,从右边获得的记录数量超过一条。

问题是,当表返回记录时,它会匹配确切的记录,但会根据行的左侧重复行的右侧。

如何在左侧获得一条记录,在右侧获得多条记录?我希望我的左连接显示一条记录,并显示与数据库中的记录一样多的记录。

the join table in the database

1 个答案:

答案 0 :(得分:-2)

你可以尝试像....

    select A.*,B.add1,C.add2 from(
    select 1 id,'A' name union
    select 2 ,'B'  union
    select 3 ,'C' union
    select 4 ,'D') A
    left join 
    (select 1 id,'A' name,'z' add1 union
    select 5 ,'B' ,'zz'  union
    select 6 ,'C' ,'zzz' union
    select 4 ,'D' ,'zzzz')B on A.id=B.id
    right join
    (select 1 id,'A' name,'1z' add2 union
    select 5 ,'B' ,'1zz'  union
    select 6 ,'C' ,'1zzz' union
    select 4 ,'D' ,'1zzzz')C on C.id=A.id

或者喜欢..

select A.columns,B.columns,C.columns from your_table1 A
left join your_table2 B on A.id=B.id
right join your_table3 C on C.id=A.id