问一个数据库查询的问题

Sodier 2007-09-21 10:31:32
例如表结构如下:
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

请问查询语句该怎么写?
...全文
205 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Zhentiwei 2007-10-30
  • 打赏
  • 举报
回复
Mark
louifox 2007-10-04
  • 打赏
  • 举报
回复
--SQLSERVER2000


declare @t table(key1 int , time1 int , value int)
insert @t select
1 , 100 , 5
union all select
1 , 101 , 7
union all select
1 , 102 , 9
union all select
2 , 100 , 6
union all select
2 , 101 , 10
select * from @t t1 where t1.time1=(select max(time1) from @t t2 where t1.key1=t2.key1)
--查询结果

(所影响的行数为 5 行)

key1 time1 value
----------- ----------- -----------
2 101 10
1 102 9

(所影响的行数为 2 行)

shakaqrj 2007-09-24
  • 打赏
  • 举报
回复
写错了

SELECT *
FROM t AS t1
WHERE t1.time in(
SELECT time
FROM t
where t.key=t1.key
order by time desc
LIMIT 1;
)

shakaqrj 2007-09-24
  • 打赏
  • 举报
回复
楼主,怎么还不给我加分??
我不是已经做好了吗?
算了,写个mysql的
SELECT *
FROM t AS t1
WHERE t1.time in(
SELECT time
FROM t
where t.key=t1.key
order by time desc
)
LIMIT 1;
shakaqrj 2007-09-24
  • 打赏
  • 举报
回复
为啥这帖子上不去?
晓风残月0110 2007-09-22
  • 打赏
  • 举报
回复
select max(time) from 表 group by key
shakaqrj 2007-09-21
  • 打赏
  • 举报
回复
宝宝做的只有两列...
shakaqrj 2007-09-21
  • 打赏
  • 举报
回复
我做的,可能比较丑陋
是在access下的:
SELECT *
FROM t AS t1
WHERE t1.time in(
SELECT top 1 time
FROM t
where t.key=t1.key
order by time desc
);

据说mysql可以用limit来实现top
zaodt 2007-09-21
  • 打赏
  • 举报
回复

=====================================
SELECT key, max(time)

FROM YourTable

GROUP BY key
=====================================
Sodier 2007-09-21
  • 打赏
  • 举报
回复
如果三列,宝宝的就不对了,那个value值会不对
Sodier 2007-09-21
  • 打赏
  • 举报
回复
mysql,这个不是数据库子板块吗?
smaltdd 2007-09-21
  • 打赏
  • 举报
回复
这个好像应该去数据库版本询问,呵呵

顺便问一句,你用得什么数据库?

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧