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

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

1、內鏈接(inner join)

首先我這有兩張表mysql

一、顧客信息表customer

二、消費訂單表orders

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

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

sql語句:code

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

sql語句也能夠這樣寫:blog

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

結果:class

內鏈接的過程:select

將符合條件的記錄組合起來,放在一張新表裏面sql語句

2、左鏈接(left join)

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

sql語句:查詢

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

結果:

從結果能夠很清楚的明白左鏈接的含義:

將左邊表的全部記錄拿出來,無論右邊表有沒有對應的記錄

3、右鏈接(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

結果:

從結果能夠很清楚的明白右鏈接的含義:

將右邊表的全部記錄拿出來,無論右邊表有沒有對應的記錄

4、全鏈接(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關鍵字將左鏈接和右鏈接,聯合起來

相關文章
相關標籤/搜索