SQL 查询不同字段的最大值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL 查询不同字段的最大值相关的知识,希望对你有一定的参考价值。

一张学习成绩单表,主要字段有学号 ID,语文成绩YW,数学成绩SX,英语成绩YY;
现在要查每个学号的考生成绩的最高分数是多少。比如:
学号001 语文90分,数学89分,英语84分;
学号002 语文60分,数学79分,英语94分;
查询的结果是 001 90
002 94
SQL语句要怎么写。

SELECT ID,
       CASE
         WHEN 语文 >= 数学 THEN
          CASE
            WHEN 语文 >= 英语 THEN
             语文
            ELSE
             英语
          END
         ELSE
          CASE
            WHEN 数学 >= 英语 THEN
             数学
            ELSE
             英语
          END
       END
FROM 成绩表

参考技术A 楼主您好
有greatest函数的数据库最好
直接select greatest(YW,SX,YY) from 表就可以了
要是没有的话,那就case when稍微麻烦点
参考技术B 呵呵,楼主接招select MAX(maxNum) as 最大值 from(
select MAX(a) as maxNum from A union all
select MAX(b) as maxNum from A union all
select MAX(c) as maxNum from A) as TB_maxNum 把a表每一列的最大值查出来组成一个表 TB_maxNum ,然后用max(maxNum)再在表中查最大值,ok了,追问

有没有更简单的方法,虽然这个也可以实现。但是这个需求只是整体SQL里的一小部分,如果这个都这么复杂,会影响到整个的运行速度。

如何查询mysql一个字段的最大值的总和

正常查询:select count(jishu) from A where jishu=4 and danwei=3
结果为:65
jishu=4 是手动写的,其实我想要这个字段最大的值
我的写法:
1 select count(jishu) from A where jishu =(select max(jishu) from A where danwei =3 )
2 select count(jishu) from A where jishu =(select max(jishu) from A ) and danwei =3
以上2个都不对
求正确写法!感谢~

参考技术A select max(jishu)from (select jishu from A group by jishu)

以上是关于SQL 查询不同字段的最大值的主要内容,如果未能解决你的问题,请参考以下文章

mysql 多表查询 比较两个字段最大、最小值,并显示对应字段

在SQL中,如何查询某一字段中最大值的数据

在SQL中,如何查询某一字段中最大值的数据

SQL语法怎么取得一个字段的最大值

求一SQL语句:如何查询最大的前3个值

sql查询时间最小值的列