开发者社区> 问答> 正文

Oracle SQL 插入数据:报错

表:

columnA columnB
123 0
123 1
123 2
125 0
126 0
126 1
128 0
128 1
128 2
127 0
129
129
130
130

这样规律的数据怎样用sql更新 为空的columnB列,其中A列可能会有N条数据是一样的,但B列必须是从0开始递增

展开
收起
kun坤 2020-06-14 10:41:36 783 0
1 条回答
写回答
取消 提交回答
  • 后台传入变量a

    update from table set columnB=a  where columnB=="" 

    order by columnA

    循环操作这条sql,a从0开始

    ######问问题都不能描述清楚 就别指望有人回答了######回复 @布尔道长 : +1######“这样规律的数据怎样用sql更新 “更新成什么? ”为空的columnB列,其中A列可能会有N条数据是一样的,但B列必须是从0开始递增 ”这是在说什么?######那么清析的表结构都理解不了?######

    引用来自“谭书记”的答案

    后台传入变量a

    update from table set columnB=a  where columnB=="" 

    order by columnA

    循环操作这条sql,a从0开始

    后台如何传入变量a?
    ######回复 @kylerho : oracle中可以用序列来实现你的自动增长。你自己试下,我提供一份简码: CREATE SEQUENCE my_seq START WITH 1 INCREMENT BY 1 MAXVALUE 100 ; (表示创建序列,从0开始,每次+1,最大值100) 然后调用我上面的sql,把a换成my_seq.nextval######回复 @谭书记 : 存储过程不太熟,试过用游标,写的有点不太正确######回复 @kylerho : 那就写个简单的存储过程吧,呵呵。还是变量一说。######回复 @谭书记 : 呵呵~~ 如果是程序操作的,我就不用在这问了,那是要在oracle中操作的######哦,我这可能是mybatis的思想。。oracle不知道适用不,看你使用的是什么orm框架,呵呵。。那你把a用oracle中的特殊函数替代下,比如自动增长的函数(不知道有木有)######使用窗口函数就OK######select columna, row_number() over(partition by columna order by columna)  - 1 columnb from t######回复 @kylerho : 修改了######回复 @kylerho : 晕,外面再嵌套一层减一会不######这个能从0开始的吗?######或者直接######在别名前减一就可以了######已经解决了,就在别名前减一,谢了
    2020-06-15 11:08:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
PostgresChina2018_樊文凯_ORACLE数据库和应用异构迁移最佳实践 立即下载
PostgresChina2018_王帅_从Oracle到PostgreSQL的数据迁移 立即下载
Oracle云上最佳实践 立即下载

相关镜像