mysql三種子查詢的方式

(1)where型子查詢
對於where型子查詢,就是先查詢出所想查詢數據的標識符,然後再通過where將數據庫中與標識符所對應的行取出來。
(2)from型子查詢
對於from型子查詢,就是將第一次查詢出來的結果當作一個表,再對錶中的數據進行操作,得到所要查詢的數據。
(3)exist型子查詢
exist需要在兩個有關聯的表中進行使用,通過exist可以判斷出一個“交集”,然後將這個交集取出來。
for exaple:
我們現在有一個數據庫
在這裏插入圖片描述
這個數據庫中包含了兩個人的各科成績以及一列id號。
**題目:**取出每個學生所對應的最大id號
where子查詢
我們可以通過select name,max(id) from garden(該數據表的名稱)group by(name);
在這裏插入圖片描述
看似找出了正確的答案,在執行一下













select name,max(id),subject from garden group by(name);

在這裏插入圖片描述
可以看出,這裏的id號所對應的科目並不正確,這裏對應的科目知識按照名字分完類之後,每個人所對應的第一個科目。
但是這裏的id號是正確的,對應的就是最大的id號

select * from garden where id in (select max(id) from garden group by(name));

在這裏插入圖片描述
這樣查詢出來的結果就是正確的
from子查詢
這道題使用from來做的話,首先我們知道group by函數的用法,在使用group by的時候,會將每類數據的第一個數據取出來,這樣的話,我們就只需要將最大id號的數據放在每一類的第一行就好了


select * from garden order by name desc,id desc;

在這裏插入圖片描述
然後再將這個結果表進行group by

select * from (select name,id,sorce,subject from garden order by name desc,id desc) as tmp group by(name);

在這裏插入圖片描述
exist查詢
我們在新建一張表
在這裏插入圖片描述
我們想查詢出第一張表中的所有人在第二張表中的所存在其它成績



select * from othersub where exists(select * from garden where garden.name = othersub.name);

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章