日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Sql 查询学生成绩表中每个科目的最高分及对应科目和学生

發布時間:2023/12/15 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Sql 查询学生成绩表中每个科目的最高分及对应科目和学生 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一道面試題,現場沒寫正確(默哀),回來記錄一下

學生成績表?:

CREATE TABLE `tabscore` (
? `id` int(11) NOT NULL AUTO_INCREMENT,
? `students` varchar(255) DEFAULT NULL,
? `course` varchar(255) DEFAULT NULL,
? `score` float(3,1) DEFAULT NULL,
? PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8;


INSERT INTO `tabscore` VALUES ('1', '張三', '語文', '75.0');
INSERT INTO `tabscore` VALUES ('2', '張三', '數學', '80.0');
INSERT INTO `tabscore` VALUES ('3', '李四', '語文', '60.0');
INSERT INTO `tabscore` VALUES ('4', '李四', '數學', '99.0');
INSERT INTO `tabscore` VALUES ('5', '王五', '語文', '85.0');
INSERT INTO `tabscore` VALUES ('6', '王五', '數學', '99.0');
?

?

  • 最容易想到的一種方式,先查詢到每個課程的最高成績,再通過join連表查詢

    select * from?
    (select course, MAX(score) as maxScore from tabscore GROUP BY course) t2?
    join ?
    tabscore?
    on tabscore.course = t2.course and tabscore.score = t2.maxScore?
    ?
  • 第二種方式, 利用子查詢語句

    select * from tabscore
    where score =
    (SELECT MAX(score) as maxscore from tabscore tb2 where tb2.course = tabscore.course)

    或者 having

    select * from tabscore
    where score =
    (SELECT MAX(score) as maxscore from tabscore tb2 GROUP BY course having tb2.course = tabscore.course)
  • 3條sql得到的結果是一致的,至于那個效率高?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的Sql 查询学生成绩表中每个科目的最高分及对应科目和学生的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。