oracle中选择时间最大的记录
答案:6 悬赏:70 手机版
解决时间 2021-03-14 23:11
- 提问者网友:咪咪
- 2021-03-14 10:26
oracle中选择时间最大的记录
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-14 11:45
两种方式,第一种使用IN,在IN里面使用子查询查出最大日期,然后再把表的日期和查出的最大日期做等于。
SELECt * FROM TABLE WHERe TRUNC(DATE) = (select max(trunc(date)) from table)
第二种可以使用NOT EXISTS,选择最大日期,那么就是不存在比自身日期大的数据
SELECt * FROM TABLE T
WHERe NOT EXISTS (SELECt 1 FROM TABLE T1 WHERe TRUNC(T1.DATE) > TRUNC(T.DATE))
二者相比,EXISTS的效率显然更高,因为IN语句需要执行一个全表的扫描。而EXISTS这样的语法,返回值是TRUE或FALSE,遇到第一个符合条件的行就会跳出检索。
SELECt * FROM TABLE WHERe TRUNC(DATE) = (select max(trunc(date)) from table)
第二种可以使用NOT EXISTS,选择最大日期,那么就是不存在比自身日期大的数据
SELECt * FROM TABLE T
WHERe NOT EXISTS (SELECt 1 FROM TABLE T1 WHERe TRUNC(T1.DATE) > TRUNC(T.DATE))
二者相比,EXISTS的效率显然更高,因为IN语句需要执行一个全表的扫描。而EXISTS这样的语法,返回值是TRUE或FALSE,遇到第一个符合条件的行就会跳出检索。
全部回答
- 1楼网友:一把行者刀
- 2021-03-14 16:38
select * from t where context=(select max(context) from t)
- 2楼网友:人類模型
- 2021-03-14 15:14
SELECt * FROM TABLE T
WHERe NOT EXISTS (SELECt 1 FROM TABLE T1 WHERe TRUNC(T1.DATE) > TRUNC(T.DATE))
WHERe NOT EXISTS (SELECt 1 FROM TABLE T1 WHERe TRUNC(T1.DATE) > TRUNC(T.DATE))
- 3楼网友:底特律间谍
- 2021-03-14 14:55
select id,context,date from (
select t.*,row_number() over(partition by id order by date desc) as num from table t) where num=1
select t.*,row_number() over(partition by id order by date desc) as num from table t) where num=1
- 4楼网友:青灯有味
- 2021-03-14 14:32
SQL语句如下:
SELECt * FROM 表名
WHERe date IN (SELECt MAX(DATE) FROM 表名)
SELECt * FROM 表名
WHERe date IN (SELECt MAX(DATE) FROM 表名)
- 5楼网友:玩世
- 2021-03-14 13:01
select *
from tab t
where not exists(select 1 from tab id = t.id and date > t.date)
最高效。。。。
from tab t
where not exists(select 1 from tab id = t.id and date > t.date)
最高效。。。。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯