MYSQL如何查詢成績?yōu)榍?名的學(xué)生
需求:查詢成績?yōu)榍?名的學(xué)生
拿到需求后,先對需求進(jìn)行分析,找出篩選的條件
Mysql查詢
1、最基本的查詢
select * from table where name="panpan"
2、查前5名
在mysql中篩選數(shù)據(jù)的前幾名,可以用關(guān)鍵字:limit
select * from table where name="panpan" limit 1
說明:查詢表中名為panpan的第一條記錄
3、以什么條件進(jìn)行篩選,需求是以成績進(jìn)行篩選,則可以用order by 排序篩選
select * from table order by grade
查詢應(yīng)用
合并后查詢:
select * from score order by grade limit 5
說明:查詢到score表里的grade ,以grade篩選,提取出前5條記錄
查詢成績最高和最低的人
簡單描述
成績表中有學(xué)生姓名、學(xué)生科目以及學(xué)生分?jǐn)?shù)。查詢分?jǐn)?shù)最高和分?jǐn)?shù)最低的學(xué)生的以及學(xué)生的分?jǐn)?shù)。注意的點如下:
1、group by,select 選擇的列,必須是group by 中的列,或者是函數(shù)形式。
2、利用MAX() 和MIN()sql函數(shù)。
3、建立的表結(jié)構(gòu)如下。
-- ---------------------------- -- Table structure for grade -- ---------------------------- DROP TABLE IF EXISTS `grade`; CREATE TABLE `grade` ( `stu_name` varchar(255) NOT NULL, `stu_subject` varchar(255) NOT NULL, `score` int(255) DEFAULT NULL, PRIMARY KEY (`stu_subject`,`stu_name`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; -- ---------------------------- -- Records of grade -- ---------------------------- INSERT INTO `grade` VALUES ('lilei', 'shuxue', '99'); INSERT INTO `grade` VALUES ('xiaoyong', 'shuxue', '66'); INSERT INTO `grade` VALUES ('lilei', 'yingyu', '80'); INSERT INTO `grade` VALUES ('xiaoyong', 'yingyu', '55'); INSERT INTO `grade` VALUES ('lilei', 'yuwen', '78'); INSERT INTO `grade` VALUES ('xiaoyong', 'yuwen', '88');
思路
1) 按照科目分組查詢成績最高的人
SELECT grade.stu_subject, MAX(grade.score) as score from grade GROUP BY stu_subject;
2) 顯示出成績最高的人的姓名和科目名稱
SELECT grade.* from grade, (SELECT grade.stu_subject, MAX(grade.score) as score from grade GROUP BY stu_subject )b WHERE grade.score = b.score and grade.stu_subject = b.stu_subject;
3) 顯示出列標(biāo)題.
SELECT “成績最高”,grade.* from grade, (SELECT grade.stu_subject, MAX(grade.score) as score from grade GROUP BY stu_subject )b WHERE grade.score = b.score and grade.stu_subject = b.stu_subject;
成績最低的也是如此就是利用MIN()函數(shù), 如果需要同時查出, 可以用union 如下sql
SELECT "成績最高",grade.* from grade, (SELECT grade.stu_subject, MAX(grade.score) as score from grade GROUP BY stu_subject )b WHERE grade.score = b.score and grade.stu_subject = b.stu_subject UNION SELECT "成績最低",grade.* from grade, (SELECT grade.stu_subject, MIN(grade.score) as score from grade GROUP BY stu_subject )b WHERE grade.score = b.score and grade.stu_subject = b.stu_subject;
查詢結(jié)果如下圖所示:
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Navicat Premiun遠(yuǎn)程連接MySQL報錯10038解決方案
這篇文章主要介紹了Navicat Premiun遠(yuǎn)程連接MySQL報錯10038解決方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11SQL實現(xiàn)LeetCode(175.聯(lián)合兩表)
這篇文章主要介紹了SQL實現(xiàn)LeetCode(175.聯(lián)合兩表),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08詳解MySQL數(shù)據(jù)庫、表與完整性約束的定義(Create)
這篇文章主要介紹了MySQL數(shù)據(jù)庫、表與完整性約束的定義(Create),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧2025-04-04面試被問select......for update會鎖表還是鎖行
select … for update 是我們常用的對行加鎖的一種方式,那么select......for update會鎖表還是鎖行,本文就詳細(xì)的來介紹一下,感興趣的可以了解一下2021-11-11mySQL count多個表的數(shù)據(jù)實例詳解
這篇文章通過實例給大家介紹了mySQL中count多個表的數(shù)據(jù),也就是多個表如何聯(lián)合查詢,文中通過項目中遇到的一個問題進(jìn)行分析和實現(xiàn),給出了詳細(xì)的示例代碼,相信對大家的理解和學(xué)習(xí)很有幫助,有需要的朋友們下面來一起看看吧。2016-11-11mysql報錯ERROR 1396 (HY000): Operation ALT
這篇文章主要給大家介紹了關(guān)于mysql報錯ERROR 1396 (HY000): Operation ALTER USER failed for root@localhost的解決方式,文中通過圖文介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考借鑒價值,需要的朋友可以參考下2024-05-05