關聯子查詢,根本含義就是對於外部查詢返回的每一行資料,內部查詢都要執行一次,就像python裡邊說的遍歷一樣。遍歷後對符合條件的記錄進行操作。
題目
查詢每門課程的成績第2名到第3名的學生資訊及該課程成績;
select
where跟的條件的含義:查詢同乙個課程sc表的成績小於sc1表的總人數。
子查詢中"where c_id=sc.c_id"其實是分組的意思。
用邏輯樹分析方法分解為,同一課程比如01號課程,找sc表的成績小於sc1成績的總人數
sc表1號課程的所有資訊:
sc1表1號課程的所有資訊:
之前說過關聯子查詢就是遍歷每一條記錄,條件時找sc表的成績小於sc1成績的總人數
sc表第一行score是80分,從sc1表中沒有找到比80更大的分數,所以結果為0;
sc表第二行score是70分(淺黃色行),從sc1表中找到3個比70大的分數(深黃色行),所以結果為3;
sc表第三行score是80分(淺橙色行),從sc1表中有1個與80相等的分數(深橙色行),因為排序在第三行,所以結果為1;
sc表第四行score是50分(淺綠色行),從sc1表中找到4個比50大的分數(深綠色行),所以結果為4;
sc表第五行score是76分(淺藍色行),從sc1表中找到2個比76大的分數(深藍色行),所以結果為2;
sc表第六行score是31分(淺灰色行),從sc1表中找到5個比31大的分數(深灰色行),所以結果為5;
排名結果:
排名結果是從從0開始的,score是80分有兩個,第一行的80分為0名,第三行的80分是第1名。要的結果是score排前2,3名,也就是排名結果在1和2之間,1號課程的地2、3名是學號3和5。
最終結果:
練手題
按各科成績進行排序,並顯示排名;
select
sql關聯查詢 子查詢綜合應用
乙個主表,關聯若干個子表,同時還要獲取子表的標識資訊,例如 人 刑滿釋放 易上訪 重點青少年,吸毒人員,臨時管控人員 應用場景就是,某某人有可能身兼數職 例如即是易上訪 又是刑滿釋放 而且還是臨時管控 可以試試如下的一攤 大多數都能看懂,歡迎提供更好的方式。select from select ai...
SQL關聯查詢
一 關聯基礎 連線查詢 查詢兩個或兩個以上資料表或檢視的查詢,通常建立在存在相互關係的父子表之間。關聯查詢 查詢的結果集中的字段可能來自多張表。要從多張表中獲取資料時,就要找到這幾張表記錄的對應關係,然後建立聯絡後分別獲取。所以連線條件 指明表之間記錄的對應關係 在關聯查詢中十分關鍵。n 張表關聯查...
sql關聯查詢
1.內連線 是最普遍的一種連線方式,選出相連的兩張表都互相滿足連線條件的資料。寫法 select ainner joinb on a.id b.aid 其中inner可忽略 舉例 a表 查詢語句 select from a inner join b on a.id b.id。將a表的每一條資料拿出來...