这是我的疑问:
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
它从两个表中获取记录。从左边开始,它获得一条记录,从右边获得的记录数量超过一条。
问题是,当表返回记录时,它会匹配确切的记录,但会根据行的左侧重复行的右侧。
如何在左侧获得一条记录,在右侧获得多条记录?我希望我的左连接显示一条记录,并显示与数据库中的记录一样多的记录。
答案 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