暂无图片
sqlite中的group by函数如果换成oracle怎么用?
我来答
分享
暂无图片 匿名用户
sqlite中的group by函数如果换成oracle怎么用?

例如:sqlite中select * from ShortMessages group by Number 怎么在oracle中用

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
DarkAthena

其实你这种写法应该是要避免的,查询了所有字段,但是又要按中间一个字段做聚合,最后得到的数据是按这个字段去重,然后其他字段随机取某行的结果,这样会导致查询出来的数据不可控,同一个sql查询可能会出现不同的结果。

所以oracle里的group by 禁止此种写法,一旦使用了group by ,那么在select后面,只能接3种值,

  1. 常量(比如 ‘abc’、123、date’2021-12-21’等定值)
  2. 聚合表达式(SUM/AVG/COUNT等等)、
  3. group by 后面接的字段或者表达式

如果你的确是想按某个字段去重,但又要保留随机一条数据的所有字段,那就要使用开窗函数做分组了 ,比如

select t.* from (select row_number() over(partition by 去重字段 order by 去重字段 ) rn, t.* from t ) t where rn = 1
暂无图片 评论
暂无图片 有用 0
暂无图片
chengang


select min(…),min(…),number from ShortMessages group by number

select max(…),max(…),number from ShortMessages group by number

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏