返回列表 上一主題 發帖

8-2-4 Limit 限制筆數

8-2-4 Limit 限制筆數

8-2-4   Limit 限制筆數
老師說:本次考試成績,總分為全班前五名者,可獲得獎學金!現在請您將「成績單」資料表內總分為前五名的同學列表出來,這個SQL指令如何下?先把總成績計算出來放在自訂名稱的「總分」欄位裡:
  1. Select 姓名,國文,英文,數學,國文+英文+數學 As 總分 From transcript
複製代碼
然後,再加入依照總分排序的指令:
  1. Select 姓名,國文,英文,數學,國文+英文+數學 As 總分 From transcript  Order By 總分
複製代碼
是依照總分排序了沒錯,但卻是由最低分數排到最高分數,得獎的可不是倒數前五名的同學ㄚ!而是要分數最高的前五名同學,因此,要在排序欄位名稱(國文+英文+數學)的後面再加上「Desc」指令,讓排序的結果是「從大排到小」:
  1. Select 姓名,國文,英文,數學, 國文+英文+數學 As 總分  From  transcript  Order By總分
複製代碼
上式SQL指令可獲得下圖結果:(範例ex08_19.php)

圖8-21   依「總分排序」從大排到小。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

Ok!由分數高的排到分數低的了,但是我們只取前五名ㄚ,所以列表的結果只需顯示總分為前五名的同學資料,這時候我們就可以使用「Limit」指令,將原來的「Select…Desc」更改為「Select…Desc Limit」,並在「Limit」之後指定我們要選取的筆數即可:(範例ex08_20.php)
  1. Select 姓名,國文,英文,數學, 國文+英文+數學 As 總分  From  transcript  Order By總分Desc Limit 5
複製代碼
這樣就獲得正確的結果囉!如下圖所示:

圖8-23   SQL指令執行結果。
心安,平安   
發表任何無意義的感謝或灌水文章一律砍,珍惜帳號,請詳閱版規!!

TOP

        靜思自在 : 時時好心就是時時好日。
返回列表 上一主題