我用select l.link_repair_time from ws_bffaultsheet_link l
where l.main_id = 5531 and l.link_repair_time is not null order by l.link_id desc
在数据库中查询出两个数据
2009-12-11 20:30:29
2009-11-27 9:18:00
我想取第一个时间2009-12-11 20:30:29。
select l.link_repair_time from ws_bffaultsheet_link l
where l.main_id = 5531 and l.link_repair_time is not null and rownum=1 order by l.link_id desc 可是这个取出来的是2009-11-27 9:18:00 请问如何修改这个sql 为什么我用rownum 和order by 来做控制了,去不出来我的第一个时间
where l.main_id = 5531 and l.link_repair_time is not null order by l.link_id desc
在数据库中查询出两个数据
2009-12-11 20:30:29
2009-11-27 9:18:00
我想取第一个时间2009-12-11 20:30:29。
select l.link_repair_time from ws_bffaultsheet_link l
where l.main_id = 5531 and l.link_repair_time is not null and rownum=1 order by l.link_id desc 可是这个取出来的是2009-11-27 9:18:00 请问如何修改这个sql 为什么我用rownum 和order by 来做控制了,去不出来我的第一个时间
where l.main_id = 5531 and l.link_repair_time is not null and rownum=1 order by l.link_id desc
这个语句中的order by l.link_id desc 好像是没有起作用啊。改成order by l.link_id asc和order by l.link_id desc 的结果是一样的
where l.main_id = 5531 and l.link_repair_time is not null
如果你是要取时间最晚的,那你用max可以得到。rownum不是根据排序来确定的。
(
select l.link_repair_time from ws_bffaultsheet_link l
where l.main_id = 5531 and l.link_repair_time is not null order by l.link_id desc
) A
WHERE rownum=1
(
select l.link_repair_time from ws_bffaultsheet_link l
where l.main_id = 5531 and l.link_repair_time is not null order by l.link_id desc
)
where rownum=1;
或者按日期分下组,取max最大的那条。或者还可以用分析函数
select * from (
(select x,row_number() over (order by l.link_repair_time desc) rn from table)where rn=1