1,有5个班级,要得到每个班级成绩前10名的学生名字,共50条记录。按班号排列,同一个班的按成绩排列
2,有一个表有三列,都是同一数据类型,查出每一行记录中这三列最大的值。不要求给出列名。例如: 统率 武力 智力
刘备 78 72 75
关羽 90 98 70
张飞 85 99 34
诸葛亮 77 40 100
查询结果应为:刘备 78、关羽 98、张飞 99、诸葛亮 100
2,有一个表有三列,都是同一数据类型,查出每一行记录中这三列最大的值。不要求给出列名。例如: 统率 武力 智力
刘备 78 72 75
关羽 90 98 70
张飞 85 99 34
诸葛亮 77 40 100
查询结果应为:刘备 78、关羽 98、张飞 99、诸葛亮 100
select f1,max(f2) from (
select f1,统率 as f2 from tt
union all
select f1,武力 as f2 from tt
union all
select f1,智力 as f2 from tt) a
group by f1
或者:
http://blog.chinaunix.net/u/29134/showart_379356.html
2、
set names utf8;
create table d(a varchar(20) not null, b int unsigned not null, c int unsigned not null,d int unsigned not null);
insert d values
('刘备', 78, 72, 75),
('关羽', 90, 98, 70),
('张飞', 85, 99, 34),
('诸葛亮', 77, 40, 100);select group_concat(b separator ',') as b from
(
select 1 as a ,concat(a,' ',greatest(b,c,d)) as b from d
) T
group by aquery result
b
刘备 78,诸葛亮 100,关羽 98,张飞 99