【请教】如果获取值最大的那个字段的字段名?

newqm 2016-08-18 11:10:01
例如成绩表,有字段:姓名、语文成绩,数学成绩,体育成绩;
需要查询:姓名、该生最高成绩、该生最高成绩字段名,如:
小强 90 语文成绩
小美 88 语文成绩
小贱 91 数字成绩
...全文
191 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tyhdxhl 2016-08-19
  • 打赏
  • 举报
回复
我觉得这样设计在一张表 有点不合理 拆分两张表 查询主表 分数最大值 后的列名即可

create table stu
(
   ID             	int(10) not null auto_increment,
name		varchar(30),
subject   		varchar(10),
score 		int(10),
   primary key (ID)
);

create table sub
(
   S_ID             	int(10) not null auto_increment,
  subject    	 varchar(20),
   primary key (S_ID)
);

insert into   stu  values ('1','小强','1',90);
insert into   stu  values ('2','小美','1',88);
insert into   stu  values ('3','小贱','2',91);

insert into   sub  values ('1','语文');
insert into   sub  values ('2','数学');
insert into   sub  values ('3','体育');


select column_name  from Information_schema.columns  where table_Name = 'stu'  order by column_name desc;
rucypli 2016-08-18
  • 打赏
  • 举报
回复
这样设计的表结构。。。。在程序里面处理更好一些
ACMAIN_CHM 2016-08-18
  • 打赏
  • 举报
回复

select *
from (
	select *
	from (
		select 姓名,'语文成绩' as c,语文成绩 as s from 成绩表
		union all
		select 姓名,'数学成绩' as c,数学成绩 as s from 成绩表
		union all
		select 姓名,'体育成绩' as c,体育成绩 as s from 成绩表
	)t
	order by 姓名,s desc
) v
group by 姓名
zjcxc 2016-08-18
  • 打赏
  • 举报
回复
select * from(
	select * from(
		select 姓名,语文成绩 as 成绩,'语文成绩' as 字段名 from tb
		union all
		select 姓名,数学成绩 as 成绩,'数学成绩' as 字段名 from tb
		union all
		select 姓名,体育成绩 as 成绩,'体育成绩' as 字段名 from tb
	)data order by 姓名, 成绩 desc limit 99999999999
)d group by 姓名

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧