oracle取相同数据类型,Oracle:重复数据去重,只取其中一条(最新时间/其他字段排序规则)数据...

一、问题:

//一个会话id代表一个聊天室,

返回该聊天室最新的一条数据显示在会话列表,

二、解决思路:

使用row_number() over 分组排序功能 来解决该问题;

*

1、语法格式:row_number() over(partition by 分组列 order by 排序列 desc);

2、row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组,在分组内部根据 COL2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的)。//row_number()从1开始

3、在使用 row_number() over()函数时候,over()里头的分组以及排序的执行晚于 where 、group by、 order by 的执行。

*

三、SQL:

select * from conversation_table t5

left join (

select id,information,information_time from (

select row_number() over(partition by id order by information_time desc ) t1, t2.id, t2.information,t2.information_time

from information_table t2)

where t1 = 1 ) t3

on t3.id = t5.id

where (t5.initiator = 'otjAK47XCpTEX5RHdRH0V7Kn29Hw' or t5.target = 'otjAK47XCpTEX5RHdRH0V7Kn29Hw')

and t5.id in (select id from information_table group by id)

参考:

https://blog.csdn.net/tang_jian_dong/article/details/79935347

https://blog.csdn.net/w405722907/article/details/78561995

https://blog.csdn.net/qq_25221835/article/details/82762416

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值