row_number() over() 中参数不同导致结果不同

yesterday0131 2017-09-02 07:02:14
1.这个函数里order by 这个参数是必须的吗?(我没写参数,没报错呢)
2.假如有个table,在db里的数据是这样
col1 col2
1a 1
2a 2
执行以下sql
select col1,col2,row_number() over() from table
这样不写参数,按什么排序不能确定,不同时间或者机器执行的结果会不会不同?还是参数默认按照order by col1,col2 asc 来排序,结果不会因为其他条件不同而变更。如果是后者,那是不是跟 select col1,col2,row_number() over(order by col1,col2 asc) from table 执行结果是一致的

...全文
1011 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yesterday0131 2017-09-06
  • 打赏
  • 举报
回复
没参数也不报错。DB2 2.5.1
终于找到答案了,不写参数的话执行的结果是不定的。
alex259 2017-09-06
  • 打赏
  • 举报
回复
row_number() over() 直接这么写不报错么?很好奇
yesterday0131 2017-09-05
  • 打赏
  • 举报
回复
两个sql差异只有那个where,加上where不应该是
2a 2 2吗
花开了叫我 2017-09-05
  • 打赏
  • 举报
回复
where t.sort > 1 为什么实行结果不是 1a 1 2 ?
jdsnhan 2017-09-05
  • 打赏
  • 举报
回复
select col1,col2,row_number() over() from table 这个语句能执行? 你用的oracle哪个版本
yesterday0131 2017-09-04
  • 打赏
  • 举报
回复
数据量大就出异常,我这虽然数据量大,但是我这的sql每次只操作一条数据 还有一个新问题哈 select col1,col2,row_number() over() from table order by col2 实行结果如下 1a 1 1 2a 2 2 select * from (select col1,col2,row_number() over() as sort from table order by col2) t where t.sort > 1 为什么实行结果却是 1a 1 2
卖水果的net 2017-09-02
  • 打赏
  • 举报
回复
不写order by,得到的结果是不稳定的。 你可以,建立一张大一点的表,写入10000行,再随机删除1000行,再写500行,再删200行,再写1000行,反复多次。 多做几次实验,异常就出来了。

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧