MySQL 多表查詢基礎

2021-10-09 21:42:00 字數 1382 閱讀 3202

用於關聯兩個表查詢結果集

-- t01,t02  為兩張表表名

-- 語法 : select 欄位1,..欄位n from 表1 [where 條件] union [distinct/all] select 欄位1,..欄位n from 表2 [where 條件];

-- 將表一結果 按照年齡倒序,表二結果按照年齡正序 limit 後面跟的資料比需要展示的數字大即可

(select

`name`

,`age`

from

`t01`

order

bylimit

3306

)union

all(

select

`score`

,`tel`

from

`t02`

order

bylimit

3306

);

2.1-內連線
-- 語法 : select 欄位名1,...欄位名n  from 表1 [inner] join 表2 on 條件;

select

`t01`

.`name`

,`t01`

.`age`

,`t02`

.`score`

from

`t01`

inner

join

`t02`

on`t01`

.`id`

=`t02`

.`stuid`

;

2.2-外連線
-- 語法:select 欄位名1,...欄位名n  from 表1 right join 表2 on 條件;

select

`t01`

.`name`

,`t01`

.`age`

,`t02`

.`score`

from

`t01`

right

join

`t02`

on`t01`

.`id`

=`t02`

.`stuid`

;

右外連線以右邊的表作為主表,主表的內容會展示,副表匹配不上的字段資訊用null表示

2.3 - 自然連線
-- 語法:select 欄位名1,...欄位名n  from 表1 natural join 表2;

-- 自然連線,會自動選擇欄位名和值一樣的 字段作為連線條件

-- 對資料表的結構要求極高,實際開發中幾乎不使用

mysql多表 MySQL 多表查詢

多表查詢 select listname from tablename1,tablename2 笛卡爾積 多表查詢中,如果沒有連線條件,則會產生笛卡爾積 數學中的定義 假設集合a 集合b 則兩個集合的笛卡爾積為 實際執行環境下,應避免使用笛卡爾積 解決方案 在where加入有效的連線條件 等值連線 ...

mysql多表查詢方式 MySQL多表查詢方式問題

你的 sql 沒有用到任何索引,對 a b 兩個表都是全表掃瞄,在資料量小的時候是沒有問題的,但是如果資料量超過 100 萬,效能問題就會突顯出來。這裡不清楚你的 created at 欄位是什麼型別,不過從你的 date format created at,y m d 看來,應該是 datetim...

mysql 多表查詢or MySQL 多表查詢

前期準備 建表create table dep id int,name varchar 20 create table emp id int primary key auto increment,name varchar 20 enum male female not null default ma...