SQL多表聯查總結

2022-03-14 08:02:35 字數 1874 閱讀 3317

交叉連線:(不常用)

返回兩個表的笛卡爾乘積(也即全組合排列)中符合查詢條件的資料行。

內連線返回連線表中符合連線條件和查詢條件的資料行。

左外連線

返回符合連線條件和查詢條件(即:內連線)的資料行,且還返回左表中不符合連線條件但符合查詢條件的資料行。

右外連線

返回符合連線條件和查詢條件(即:內連線)的資料行,且還返回右表中不符合連線條件但符合查詢條件的資料行。

全外連線(不常用,mysql不支援)

返回符合連線條件和查詢條件(即:內連線)的資料行,且還返回左表中不符合連線條件但符合查詢條件的資料行以及右表中不符合連線條件但符合查詢條件的資料行。

例子表結構和資料:

users表

id name

1 李四

2 王五

4 張三

logs表

id user_id log

1 1 操作了a

2 1 操作了b

3 2 操作了c

4 2 操作了d

5 3 操作了e

交叉連線:

語句

select

a.`id`,

a.`name`,

b.`log

`from

`users`

asa,

`logs`

as b

結果

id name log

1 李四 操作了a

2 王五 操作了a

4 張三 操作了a

1 李四 操作了b

2 王五 操作了b

4 張三 操作了b

1 李四 操作了c

2 王五 操作了c

4 張三 操作了c

1 李四 操作了d

2 王五 操作了d

4 張三 操作了d

1 李四 操作了e

2 王五 操作了e

4 張三 操作了e

內連線:

語句

select

a.`id`,

a.`name`,

b.`log

`from

`users` asa

inner

join `logs` as b on a.`id` = b.`user_id`

結果

id name log

1 李四 操作了a

1 李四 操作了b

2 王五 操作了c

2 王五 操作了d

左外連線:

語句

select

a.`id`,

a.`name`,

b.`log

`from

`users` asa

left

join `logs` as b on a.`id` = b.`user_id`

結果

id name log

1 李四 操作了a

1 李四 操作了b

2 王五 操作了c

2 王五 操作了d

4 張三 null

右外連線:

語句

select

a.`id`,

a.`name`,

b.`log

`from

`users` asa

right

join `logs` as b on a.`id` = b.`user_id`

結果

id name log

1 李四 操作了a

1 李四 操作了b

2 王五 操作了c

2 王五 操作了d

null null 操作了e

sql多表聯查

sql的多表聯查有點忘了,搞個例子記錄一下,以後再忘來看看。一 內連線 student表 name collegeid 張三11 李四college表 collegeid collegename 11清華 北大內連線 select name,college.collegename from stud...

簡單的多表聯查sql

mysql資料庫預設建立的test資料庫下實踐 建立兩張表 users 和 products use test create table test users user id intnot null auto increment,username varchar 30 primary key use...

SQL多表關聯查詢

關於 有時候,我們查詢資料時,會採用多資料庫關聯查詢的方式。資料庫通過連線兩張表或多張表查詢時,會生成一張臨時的中間表,然後返回給使用者的就是這張臨時表的資料。那麼具體怎麼操作呢?我們可以採用left join,搭配on where來實現。具體備註 1.on條件是在生成臨時表時使用的條件,它不管on...