今天是周二,我們一起來研究下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 手機...