首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

问个数据库查询的有关问题

2012-02-29 
问个数据库查询的问题例如表结构如下:keytimevalue11005110171102921006210110key为关键字现在要查询时间

问个数据库查询的问题
例如表结构如下:
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

请问查询语句该怎么写?

[解决办法]

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)
keytimevalue
1 102 9
2 101 10

[解决办法]
戏法人人会变,各有巧妙不同:
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

热点排行