表结构
id name class
1  zhang a
2  li    b
3  wang  a
4  li4   b
....能不能用一个语句求出 各个class的对应的前5个name记录?

解决方案 »

  1.   

    select id, name, class from tbl_name where class = 'a' limit 5
    union
    select id, name, class from tbl_name where class = 'b' limit 5
    ...
    这个语句可以生成!
      

  2.   

    Mysql :SELECT name
    FROM `table`
    WHERE class = a
    OR class = b order by class limit 5MSSql :SELECT top 5 name
    FROM `table`
    WHERE class = a
    OR class = b order by class
      

  3.   


    SELECT * FROM  tbl_name  as a  
    WHERE (SELECT count(*) FROM tbl_name WHERE class = a.class AND id <a.id ) < 5
    ORDER BY class,id 
      

  4.   

    楼上结果是正确的,不过mysql这种用法实在让我难以理解.
      

  5.   

    昨日如梦 的语句好强!能不能具体解释下运行的原理啊还有,按照这个语句取出的id值是按照id的顺序排列的,如果要倒序取出,应该修改哪里?呵呵 主要是还读不懂这个语句的意思
      

  6.   

    select id,class,name top 5 from tablename where in(select class DISTINCT from tablename )不知可不可以..
      

  7.   

    把这个ORDER BY class,id 改成:ORDER BY class,id desc
      

  8.   


    4楼正解。把表内数据作为条件进行查询并把查询结果作为条件的部分。不过如果id和class不是key,或者数据量很大的时候,性能有些悬乎,毕竟这个选取方式先决就是全表扫描