[英]SQL join left and right
這是我的查詢:
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
它從兩個表中獲取記錄。 從左側獲得一條記錄,從右側獲得多於一個的記錄數。
問題在於,當表返回記錄時,它與確切的記錄匹配,但根據行的左側重復行的右側。
我怎樣才能在左邊獲得一條記錄,而在右邊獲得許多記錄? 我希望左連接顯示一條記錄,右連接顯示與數據庫中一樣多的記錄。
您可以嘗試像....
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.