對於sql的join,在學習起來可能是比較亂的。我們知道,sql的join語法有很多inner的,有outer的,有left的,有時候,對於select出來的結果集是什麼樣子有點不是很清楚。coding horror上有一篇文章,通過文氏圖 venn diagrams 解釋了sql的join。我覺得清楚易懂,轉過來。
假設我們有兩張表。table a 是左邊的表。table b 是右邊的表。其各有四條記錄,其中有兩條記錄name是相同的,如下所示:讓我們看看不同join的不同
right outerjoin 是後面的表為基礎,與left outer join用法類似。這裡不介紹了。
5.union與union all
union 操作符用於合併兩個或多個 select 語句的結果集。
請注意,union 內部的 select 語句必須擁有相同數量的列。列也必須擁有相似的資料型別。同時,每條 select 語句中的列的順序必須相同。union 只選取記錄,而union all會列出所有記錄。
選取不同值
全部列出來
(3)注意:
由於 id 1 pirate 與 id 2 pirate 並不相同,不合併
還需要註冊的是我們還有乙個是「交差集」 cross join, 這種join沒有辦法用文式圖表示,因為其就是把錶a和表b的資料進行乙個n*m的組合,即笛卡爾積。表示式如下:select * from tablea cross join tableb
這個笛卡爾乘積會產生 4 x 4 = 16 條記錄,一般來說,我們很少用到這個語法。但是我們得小心,如果不是使用巢狀的select語句,一般系統都會產生笛卡爾乘積然再做過濾。這是對於效能來說是非常危險的,尤其是表很大的時候。
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢例項 MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...
mysql連線查詢on MySQL連線查詢例項詳解
建立表suppliers create table suppliers s id int not null auto increment,s name char 50 not null,s city char 50 null,s zip char 10 null,s call char 50 not...