一、定義:
多表查詢包括二張表以上的表的查詢,其中有內連拉、左外、右外連線的查詢
二、資料準備
createtable
emp(
id intprimary
keyauto_increment,
name
varchar(20
), salary
double(7,2
), dep_id
int);
insert
into emp (name,salary,dep_id) values ("張三",8000,2
), ("李四",
12000,1
), ("王五",
5000,2
), ("趙六",
8000,3
), ("豬七",
9000,1
), ("周八",
7000,4
), ("蔡九",
7000,2
);create
table
dep(
id intprimary
keyauto_increment,
name
varchar(20));
insert
into dep (name) values
("教學部"),
("銷售部"),
("人事部");
三、內連線
查詢兩張表中都有的關聯資料,相當於利用條件從笛卡爾積結果中篩選出了正確的結果。
select
*
from
emp,dep
where
emp.dep_id=dep.id; 或select
*
from
emp
inner
join
dep
on
emp.dep_id=dep.id;
四、左外連線
在內連線的基礎上增加左邊有右邊沒有的結果
select
*
from
emp
left
join
dep
on
dep.id=emp.dep_id;
五、右外連線
在內連線的基礎上增加右邊有左邊沒有的結果
select
*
from
emp
right
join
dep
on
dep.id=emp.dep_id;
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...