sql連接查詢(inner join、full join、left join、 right join)


sql連接查詢(inner join、full join、left join、 right join)

一、內連接(inner join)

首先我這有兩張表

1、顧客信息表customer

2、消費訂單表orders

注意:顧客與訂單之間是一對多關系

需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費了多少錢(money)

sql語句:

select c.customer_name, o.create_time, o.money
from customer c, orders o
where c.id = o.customer_id

sql語句也可以這樣寫:

select c.customer_name, o.create_time, o.money
from customer c inner join orders o
on c.id = o.customer_id

結果:

內連接的過程:

將符合條件的記錄組合起來,放在一張新表里面

二、左連接(left join)

需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費了多少錢(money)

sql語句:

select c.customer_name, o.create_time, o.money
from customer c 
left join orders o
on c.id = o.customer_id

結果:

從結果可以很清楚的明白左連接的含義:

將左邊表的所有記錄拿出來,不管右邊表有沒有對應的記錄

三、右連接(right join)

需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費了多少錢(money)

sql語句:

select c.customer_name, o.create_time, o.money
from customer c 
right join orders o
on c.id = o.customer_id

結果:

從結果可以很清楚的明白右連接的含義:

將右邊表的所有記錄拿出來,不管右邊表有沒有對應的記錄

四、全連接(full join)

這里要注意的是mysql本身並不支持全連接查詢,但是我們可以使用UNION關鍵字實現

sql語句:

select c.customer_name, o.create_time, o.money
from customer c 
left join orders o
on c.id = o.customer_id

UNION

select c.customer_name, o.create_time, o.money
from customer c 
right join orders o
on c.id = o.customer_id

結果:

從sql語句中可以清楚的看到:

使用UNION關鍵字將左連接和右連接,聯合起來


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM