簡體   English   中英

SQL左右聯接

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM