mysql多表查詢

2022-07-26 19:57:09 字數 1537 閱讀 4031

--  **************二、關聯查詢(多表查詢)****************----

--需求:查詢員工及其所在部門(顯示員工姓名,部門名稱)

select empname,deptname from employee,dept;

--需求:查詢員工及其所在部門(顯示員工姓名,部門名稱)

-- 多表查詢規則:1)確定查詢哪些表 2)確定哪些哪些字段 3)表與表之間連線條件 (規律:連線條件數量是表數量-1)

-- 2.2內連線查詢:只有滿足條件的結果才會顯示(使用最頻繁)

select empname,deptname -- 2)確定哪些哪些字段

from employee,dept -- 1)確定查詢哪些表

where employee.deptid=dept.id -- 3)表與表之間連線條件

--內連線的另一種語法

select empname,deptname

from employee

inner join dept

on employee.deptid=dept.id;

--使用別名

select e.empname,d.deptname

from employee e

inner join dept d

on e.deptid=d.id;

--需求: 查詢每個部門的員工

--預期結果:

--軟體開發部 張三

--軟體開發部 李四

--應用維護部 王五

--秘書部 陳六

-- 總經辦 null

-- 2.2左[外]連線查詢: 使用左邊表的資料去匹配右邊表的資料,如果符合連線條件的結果則顯示,如果不符合連線條件則顯示null

--(注意: 左外連線:左表的資料一定會完成顯示!)

select d.deptname,e.empname

from dept d

left outer join employee e

on d.id=e.deptid;

-- 2.3右[外]連線查詢: 使用右邊表的資料去匹配左邊表的資料,如果符合連線條件的結果則顯示,如果不符合連線條件則顯示null

--(注意: 右外連線:右表的資料一定會完成顯示!)

select d.deptname,e.empname

from dept d

right outer join employee e

on d.id=e.deptid;

-- 2.4自連線查詢

--需求:查詢員工及其上司

--預期結果:

-- 張三 null

--李四 張三

--王五 李四

--陳六 王五

select e.empname,b.empname

from employee e

left outer join employee b

on e.bossid=b.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...