oracle中选择时间最大的记录

idcontextdateA12011-6-1A22011-6-2A32011-6-3B12011-6-1B22011-6-2B32011-6-3我想要的结果是A3201... id context date
A 1 2011-6-1
A 2 2011-6-2
A 3 2011-6-3
B 1 2011-6-1
B 2 2011-6-2
B 3 2011-6-3

我想要的结果是
A 3 2011-6-3
B 3 2011-6-3
展开
 我来答
依然特雷西sky
高粉答主

2020-04-13 · 繁杂信息太多,你要学会辨别
知道答主
回答量:1511
采纳率:33%
帮助的人:67.2万
展开全部

1、exists后面接的是一个子查询如下图。

2、以下图两个表为示例,来演示 a表中的id   与b表中的aid相关联。

3、exists的作用是检查子查询的结果是否为真,如果子查询为true则执行外面的SQL语句。 exists不返回数据只返回true 或false。

4、如果返回为false则不执行外面的SQL语句 如下图。

5、在数据量比较大的时候效率不一样,但在数据量比较少的时候效率是一样的。

hit_lubin
2011-06-28 · TA获得超过7889个赞
知道大有可为答主
回答量:1554
采纳率:100%
帮助的人:2000万
展开全部
两种方式,第一种使用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,遇到第一个符合条件的行就会跳出检索。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
flyingFish211
2011-06-28 · TA获得超过2.1万个赞
知道大有可为答主
回答量:1.5万
采纳率:50%
帮助的人:1.1亿
展开全部
select *
from tab t
where not exists(select 1 from tab id = t.id and date > t.date)

最高效。。。。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友07f2face2
2011-06-28 · TA获得超过283个赞
知道小有建树答主
回答量:382
采纳率:50%
帮助的人:135万
展开全部
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
banksia
2011-06-28 · TA获得超过1362个赞
知道小有建树答主
回答量:529
采纳率:80%
帮助的人:280万
展开全部
SQL语句如下:
SELECT * FROM 表名
WHERE date IN (SELECT MAX(DATE) FROM 表名)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式