sql server查詢每門課程的前兩名的學生編號,課程編號,成績並排序

來源:互聯網
上載者:User

資料結構介紹:

成績表(編號,學號,科目編號,成績)

SQL基礎瞭解:

select * from 成績表 

對於Sql Server它查詢的過程是逐條查詢的,也就是一條一條記錄進行查詢的;

那麼我們可以先思考下,當它查“成績表”時,第一條成功後才查詢第二條的;

 

假設查特定的一門科目的最高分值前2條記錄:

select top 2 * from 成績表  where 科目編號=1  order by 成績 DESC

 

 那麼當要查詢每一門科目成績的前兩條,就可以這樣思考:

select  查詢到第一條時,會得到 (編號,學號,科目編號,成績),

那麼這一條記錄是否符當前成績是當前科目最高分的前兩條件呢?

上邊已經處理為取前兩條的方法了,那麼這裡進行下應該就可以了:

select 學號,科目編號,成績 from 成績表 AS A

where 學號 in

 (

select top 2 學號 from 成績表 AS B  where B.科目編號=A.科目編號  order by 成績 DESC

)

 

 上面的指令碼可以理解為:

因為查詢是逐條的,所以(黃色地區)可以理解為,當第一條資料擷取後就進行條件判斷;

學號是否存在於目前記錄中科目最高成績的前兩條;

子查詢部分就是當前這條記錄的科目最高成績的前兩個學號

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.