子查詢快 還是關聯查詢快 SQL關聯子查詢

2021-10-11 11:35:04 字數 1694 閱讀 5649

關聯子查詢,根本含義就是對於外部查詢返回的每一行資料,內部查詢都要執行一次,就像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表的每一條資料拿出來...