1,有5个班级,要得到每个班级成绩前10名的学生名字,共50条记录。按班号排列,同一个班的按成绩排列
2,有一个表有三列,都是同一数据类型,查出每一行记录中这三列最大的值。不要求给出列名。例如:  统率   武力  智力
刘备    78    72   75 
关羽    90    98   70
张飞    85    99   34
诸葛亮  77    40   100
查询结果应为:刘备 78、关羽 98、张飞  99、诸葛亮 100

解决方案 »

  1.   

    2
    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
      

  2.   

    1、http://yueliangdao0608.blog.51cto.com/397025/81388
    或者:
    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