SQL join語句詳解

2021-10-01 01:55:31 字數 1690 閱讀 4707

表一(person)

idname1劉備

2趙雲3華佗

4諸葛亮

表二(event)

idevent

1桃園結義

4七擒孟獲

5大意失荊州

6火燒連營

內連線是最常見的一種連線,只連線匹配的行。

例:

select

*from person p inner

join event e on p.id = e.id;

inner join產生的結果集中,是person表和event表根據條件產生的交集。

結果:id

name

event1劉備

桃園結義

4諸葛亮

七擒孟獲

left join返回左表的全部行和右表滿足on條件的行,如果左表的行在右表中沒有匹配,那麼這一行右表中對應資料用null代替。

注釋:在某些資料庫中,left join 稱為left outer join。

例:

select

*from person p left

join event e on p.id = e.id;

left join產生person表的完全集,而event表中匹配的則有值,沒有匹配的則以null值取代。

結果:id

name

event1劉備

桃園結義2趙雲

null3華佗

null

4諸葛亮

七擒孟獲

right join返回右表的全部行和左表滿足on條件的行,如果右表的行在左表中沒有匹配,那麼這一行左表中對應資料用null代替。

注釋:在某些資料庫中,right join 稱為right outer join。

例:

select

*from person p right

join event e on p.id = e.id;

right join產生event表的完全集,而person表中匹配的則有值,沒有匹配的則以null值取代。

結果:id

name

event1劉備

桃園結義

4諸葛亮

七擒孟獲

5null

大意失荊州

6null

火燒連營

full join 會從左表和右表那裡返回所有的行。如果其中乙個表的資料行在另乙個表中沒有匹配的行,那麼對面的資料用null代替。

例:

select

*from person p right

join event e on p.id = e.id;

full outer join產生person表和event表的並集。但是需要注意的是,對於沒有匹配的記錄,則會以null做為值。

結果:id

name

event1劉備

桃園結義2趙雲

null3華佗

null

4諸葛亮

七擒孟獲

5null

大意失荊州

6null

火燒連營

關於 SQL join 語句

幾種sql json查詢語句如下圖 其中 full outer join 連線無法在mysql中使用,可用 union 代替。注意 union all 命令和 union 命令幾乎是等效的,不過 union all 命令會列出所有的值。select select list from tablea a...

sql join語句總結

所有的join語句都跟連線順序相關 1 cross join 交叉聯接 生成笛卡爾積後,一定不能寫on或where條件。eg select from table 2 a cross join table 1 b 2 inner join 內聯接 生成笛卡爾積後根據on條件篩選 eg select f...

精妙SQL語句 sql join語句

文章出處 精妙sql語句 sql join語句 說明 複製表 只複製結構,源表名 a 新錶名 b sql select into b from a where 1 1 說明 拷貝表 拷貝資料,源表名 a 目標表名 b sql insert into b a,b,c select d,e,f from...