一,、內(nèi)連接(inner join)首先我這有兩張表 1,、顧客信息表customer2、消費(fèi)訂單表orders注意:顧客與訂單之間是一對多關(guān)系 需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(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 結(jié)果: 內(nèi)連接的過程: 將符合條件的記錄組合起來,,放在一張新表里面 二,、左連接(left join)需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(money) sql語句: select c.customer_name, o.create_time, o.money from customer c left join orders o on c.id = o.customer_id 結(jié)果: 從結(jié)果可以很清楚的明白左連接的含義: 將左邊表的所有記錄拿出來,不管右邊表有沒有對應(yīng)的記錄 三,、右連接(right join)需求:查詢哪個顧客(customer_name)在哪一天(create_time)消費(fèi)了多少錢(money) sql語句: select c.customer_name, o.create_time, o.money from customer c right join orders o on c.id = o.customer_id 結(jié)果: ,、 從結(jié)果可以很清楚的明白右連接的含義: 將右邊表的所有記錄拿出來,,不管右邊表有沒有對應(yīng)的記錄 四、全連接(full join)這里要注意的是mysql本身并不支持全連接查詢,,但是我們可以使用UNION關(guān)鍵字實(shí)現(xiàn) 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 結(jié)果: 從sql語句中可以清楚的看到: 使用UNION關(guān)鍵字將左連接和右連接,,聯(lián)合起來 |
|