Oracle SQL 插入数据

kylerho 发布于 2013/09/24 14:19
阅读 527
收藏 1

表:

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开始递增

加载中
0
一个不正经的程序员
一个不正经的程序员

后台传入变量a

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

order by columnA

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

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

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

后台传入变量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
k
kylerho
回复 @谭书记 : 存储过程不太熟,试过用游标,写的有点不太正确
一个不正经的程序员
一个不正经的程序员
回复 @kylerho : 那就写个简单的存储过程吧,呵呵。还是变量一说。
k
kylerho
回复 @谭书记 : 呵呵~~ 如果是程序操作的,我就不用在这问了,那是要在oracle中操作的
一个不正经的程序员
一个不正经的程序员
哦,我这可能是mybatis的思想。。oracle不知道适用不,看你使用的是什么orm框架,呵呵。。那你把a用oracle中的特殊函数替代下,比如自动增长的函数(不知道有木有)
0
StormFour
StormFour
使用窗口函数就OK
0
StormFour
StormFour
select columna, row_number() over(partition by columna order by columna)  - 1 columnb from t
StormFour
StormFour
回复 @kylerho : 修改了
StormFour
StormFour
回复 @kylerho : 晕,外面再嵌套一层减一会不
k
kylerho
这个能从0开始的吗?
0
StormFour
StormFour
或者直接
0
StormFour
StormFour
在别名前减一就可以了
k
kylerho
已经解决了,就在别名前减一,谢了
返回顶部
顶部