例如表结构如下:
key   time  value
1      100    5
1      101    7
1      102    9
2      100    6
2      101    10
key为关键字
现在要查询时间值最大的各个关键字所对应的记录例如上面对于关键字1,时间值最大为102,对于关键字2,时间值最大为101,那么查询结果应为:
1   102   9
2   101   10请问查询语句该怎么写?

解决方案 »

  1.   


    create table b1 (`key` int not null,`time` int not null,`value` int not null) engine=myisam default charset=utf8;
    insert into b1 values
    (1, 100, 5),
    (1, 101, 7),
    (1, 102, 9),
    (2, 100, 6),
    (2, 101, 10);select * from (select * from b1 order by `time` desc ) T group by `key`;drop table b1;
    =========
    query result(2 records)
    key time value
    1  102  9
    2  101  10
      

  2.   

    戏法人人会变,各有巧妙不同:
    SELECT t1 . * 
    FROM b1 t1, (
    SELECT `key` , max( `time` ) AS maxtime
    FROM b1
    GROUP BY `key` 
    )t2
    WHERE t1.`key` = t2.`key` 
    AND t1.time = t2.maxtime
      

  3.   

    yueliangdao0608((深圳PHPER,MSN:[email protected])) 能否解释下:
    select * from b1 order by `time` desc返回的结果集T和原来的表B1不是一样的吗?只是顺序不同,为什么可以达到预期的效果?
      

  4.   

    跟原来的表B1是不一样的,原来的是无序。后者是按照TIME字段排序。
      

  5.   

    group子句跟表的顺序会有关系吗?
      

  6.   

    select key,   max(time),max(value) from tbl gorup by key order by key
      

  7.   

    因为GROUP 分组的时候会把第一个先提出来,
    所以我排序是为了让时间最大的排在前面。
    这样有每组的最大的就出来了。
      

  8.   

    TO wuxinyuzhu请不要用MSSQL 的语法回答问题。这里是MYSQL版。
      

  9.   

    to yueliangdao0608((深圳PHPER,MSN:[email protected])) :
    group by的时候不是会把key相同的都放在一个组吗?
    为什么按照那样查询会只得到time最大(排序后第一条)的一条记录,而不是key相同的一组记录?尽管time已经排了序
      

  10.   

    TO lz.先看看SQL的基本知识吧。
      

  11.   

    select key,max(time) as time,values 
    from tableName
    group by key;
      

  12.   

    mysql> select * from (select * from b1 order by 'time' desc) T group by T.key;
    +-----+------+-------+
    | key | time | value |
    +-----+------+-------+
    |   1 |  100 |     5 | 
    |   2 |  100 |     6 | 
    +-----+------+-------+
    2 rows in set (0.00 sec)mysql> select * from (select * from b1 order by time desc) T group by T.key;
    +-----+------+-------+
    | key | time | value |
    +-----+------+-------+
    |   1 |  102 |     9 | 
    |   2 |  101 |    10 | 
    +-----+------+-------+
    2 rows in set (0.01 sec)
      

  13.   

    order by 字段加不加引号怎么是相反的?!
    加引号了是升序的,不加是降序?!
    我这装的MYSQL。在LINUX下
      

  14.   

    可不可以用group by key,先把表按key 分开,再在里面寻找最大值,我是新手!!提供这种思路,莫笑!!