a
id   typeid  1      10
2      10
3      20
4      30
5      14
6      14
7      18
8      20
9      30
10     20
11     20
12     30
13     14
14     15
15     10
16     20
17     30
18     10     
我要查询条件是typeid不同数字两条!并按id高取得id结果如下id   typeid  18    10
17    30
16    20
15    10 
14    15
13    14
12    30
11    20
7     18
6     14我只想得到id
typeid可以不用打印出来就是得到18,17,16,15,14,13,12,11,7,6 
他们之间可以不分先后!
只要得到typeid分类高到底取id就行!如17,18,16,15,14,13,12,11,7,6 也可以

解决方案 »

  1.   

    参考下贴中的多种方法http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
    [征集]分组取最大N条记录方法征集,及散分....
      

  2.   


    select k.*
    from a k join (select max(id) as m_id ,typeid from a group by typeid ) b  on k.typeid=b.typeid
    where k.id=b.m_id or  k.id=(select max(id) from a where typeid =b.typeid and id<>b.m_id);
    /*
    +------+--------+
    | id   | typeid |
    +------+--------+
    |    6 |     14 |
    |    7 |     18 |
    |   11 |     20 |
    |   12 |     30 |
    |   13 |     14 |
    |   14 |     15 |
    |   15 |     10 |
    |   16 |     20 |
    |   17 |     30 |
    |   18 |     10 |
    +------+--------+
    10 rows in set (0.00 sec)
    */
      

  3.   

    select *
    from a t
    where 2>(select count(*)
    from a 
    where typeid=t.typeid 
    and id>t.id)