數據庫 | SQL查詢&LIMIT的用法


前言

select top n 形式的語句可以獲取查詢的前幾個記錄,但是 mysql沒有此語法,mysql用limit來實現相關功能。

LIMIT子句可以被用於強制 SELECT 語句返回指定的記錄數。LIMIT 接受一個或兩個數字參數。參數必須是一個整數常量。

如果給定兩個參數,第一個參數指定第一個返回記錄行的偏移量,第二個參數指定返回記錄行的最大數目。

萬年不變學生表

有2張表,學生表(student)基本信息如下

【自動化/測開面試集錦系列】SQL查詢

科目和分數表(grade)

【自動化/測開面試集錦系列】SQL查詢

查詢前3名

列出數學成績前3名的學生(要求顯示字段:學號,姓名, 科目,成績)

select *

from grade

where kemu = '數學'

order by score

desc

limit 3

【自動化/測開面試集錦系列】SQL查詢

先通過limit取出前三條記錄,再結合student表查詢

select a.id, a.name, b.kemu, b.score

from student a, grade b

where a.id = b.id

and kemu = '數學'

order by score

desc

limit 3

查詢第2-3名記錄

limit后面如果只寫一個整數n,那就是查詢的前n條記錄;如果后面帶2個整數n 和 m,那么第一個數n就是查詢出來隊列的起點(從0開始),第二個是m是統計的總數目

第2-3條記錄,那么起點就是1, 第2-3名有2條記錄,那么第二個參數就是2

select a.id, a.name, b.kemu, b.score

from student a, grade b

where a.id = b.id

and kemu = '數學'

order by score

desc

limit 1, 2

【自動化/測開面試集錦系列】SQL查詢

備注:limit是按條數取的,名次一樣的,也算一個記錄。如果取第5-14的記錄,那就是limit 4 10

查詢第3到后面所有的

select a.id, a.name, b.kemu, b.score

from student a, grade b

where a.id = b.id

and kemu = '數學'

order by score

desc

limit 3, 10000

注意:有些資料上寫的limit 3, -1 用-1代碼最大值,這個是不對的,會報錯,解決辦法:隨便寫個非常大的整數

【自動化/測開面試集錦系列】SQL查詢

英語課程少於80分的人

統計英語課程少於80分的,顯示 學號id, 姓名,科目,分數

SELECT a.id, a.name, b.kemu, b.score

FROM student a, grade b

WHERE a.id = b.id

AND b.kemu = '英語'

AND b.score < 80

【自動化/測開面試集錦系列】SQL查詢

統計每門課程不及格、一般、優秀

課程不及格(<60)一般(60<= x <=80)優秀(>80)

SELECT b.kemu,

(SELECT COUNT(*) FROM grade WHERE score < 60 and kemu = b.kemu) as 不及格,

(SELECT COUNT(*) FROM grade WHERE score between 60 and 80 and kemu = b.kemu) as 一般,

(SELECT COUNT(*) FROM grade WHERE score > 80 and kemu = b.kemu) as 優秀

FROM grade b

GROUP BY kemu

查找每科成績前2名

查找每科成績前2名,顯示id, 姓名,科目,分數

先按科目和分數查詢

SELECT t1.id, t1.kemu,t1.score

FROM grade t1

ORDER BY t1.kemu,t1.score DESC

【自動化/測開面試集錦系列】SQL查詢

再查找每個每科前面2名

SELECT t1.id, a.name, t1.kemu,t1.score

FROM grade t1, student a

WHERE

(SELECT count(*) FROM grade t2

WHERE t1.kemu=t2.kemu AND t2.score>=t1.score

)<=2

and a.id = t1.id

ORDER BY t1.kemu,t1.score

DESC


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM