mysql 多表聯查 MySQL的多表聯查

2021-10-25 14:24:53 字數 2262 閱讀 3800

今天是周二,我們一起來研究下mysql的多表聯查啊。或許你也知道,表之間的關係有:1對1、1對多、多對多。然後......

1. 巢狀查詢:乙個查詢的結果是另外sql查詢的條件

如:查詢stu表中年齡最大的是誰?

mysql> select * from stu where age=(select max(age) from stu);

mysql> select * from stu where age in(select max(age) from stu); --(子查詢結果是多條時使用in查詢)

| id | name | age | *** | classid |

| 14 | abc | 33 | w | python01 |

1 row in set (0.01 sec)

2. where關聯查詢

已知:員工personnel表和部門department表,其中員工表中的did欄位為部門表id主鍵關聯。

查詢所有員工資訊,並顯示所屬部門名稱

要求:顯示字段:員工id 部門 姓名

mysql> select p.id,d.name,p.name from personnel p,department d where p.did = d.id;

| id | name | name |

| 2 | 人事部 | 李玉剛 |

| 10 | 人事部 | 阿杜 |

| 4 | 市場部 | 劉歡 |

3. 連線join查詢

左聯:left join

右聯:right join

內聯:inner join

已知如下表所示,商品類別資訊表(具有兩層類別關係,通過pid表示,0表示一級類別)

mysql> select * from type;

| id | name | pid |

| 1 | 服裝 | 0 |

| 2 | 數碼 | 0 |

| 3 | ** | 1 |

| 4 | 手機 | 2 |

| 5 | 相機 | 2 |

| 6 | 電腦 | 2 |

| 7 | ** | 1 |

| 8 | 童裝 | 1 |

| 9 | 食品 | 0 |

| 10 | 零食 | 9 |

| 11 | 特產 | 9 |

| 12 | 休閒裝 | 1 |

12 rows in set (0.00 sec)

mysql> desc type;

| field | type | null | key | default | extra |

| id | int(10) unsigned | no | pri | null | auto_increment |

| name | varchar(16) | no | | null | |

| pid | int(10) unsigned | yes | | null | |

3 rows in set (0.00 sec)

-- 查詢二級類別資訊,並關聯出他們的父類別名稱

mysql> select t1.id,t1.name,t2.name from type t1,type t2 where t1.pid!=0 and t1.pid=t2.id;

| id | name | name |

| 3 | ** | 服裝 |

| 4 | 手機 | 數碼 |

| 5 | 相機 | 數碼 |

| 6 | 電腦 | 數碼 |

| 7 | ** | 服裝 |

| 8 | 童裝 | 服裝 |

| 10 | 零食 | 食品 |

| 11 | 特產 | 食品 |

| 12 | 休閒裝 | 服裝 |

9 rows in set (0.01 sec)

--統計每個一級類別下都有多少個子類別。

mysql> select t1.id,t1.name,count(t2.id) from type t1,type t2 where t1.pid=0 and t1.id=t2.pid group by t1.id;

| id | name | count(t2.id) |

| 1 | 服裝 | 4 |

| 2 | 數碼 | 3 |

| 9 | 食品 | 2 |

3 rows in set (0.00 sec)

mysql的多表聯查就講到這裡啦。還是那句話,記得關注我。那啥,我知道粉絲們已經看煩了這句話,但是我還是很想說啊,萬一有人忘了關注我呢?哈哈哈......

mysql多表聯查 mysql 多表聯查 例項

多表查詢 笛卡爾積查詢 笛卡爾積查詢 就是兩張表相乘,若左邊表有m條資訊,右邊表有n條資訊,那麼查詢顯示的資訊總共為m n條,這其中往往包含大量錯誤資料,需要用where 條件來過濾無用資訊 笛卡爾積查詢語句 select from dept,emp id name id name dept id ...

mysql 多表聯查

1.多表連線型別 2.1.笛卡爾積 交叉連線 在 mysql 中可以為 cross join 或者省略 cross 即 join,或 者使用 如 1.select from table1 cross join table2 2.select from table1 join table2 3.sel...

mysql多表聯查

1.交叉查詢 笛卡爾積 基本不用 2.內連線查詢 3.外鏈結 1 左外連線 2 右外連線 4.子查詢 巢狀查詢 eg 查詢分類名稱是手機數碼的商品 select from product p where p.cno in select cid from category where cname 手機...