Sql Oracle-更新、解码和设置值
我有一张桌子Sql Oracle-更新、解码和设置值,sql,database,oracle,oracle10g,Sql,Database,Oracle,Oracle10g,我有一张桌子 **Fruit Number** Apple 5 Grape 9 Orange 1 Coconut 54 Mango 22 我想: 选择整个列表 把“苹果、芒果、椰子”放在最前面 更新当前订单,其中number=rownum 清单应如下所示: **Fruit Number** Apple 1 Mango 2 Coconut 3 Grape 4 Orange 5 我尝试了以下方法,但遇到语法问题 upda
**Fruit Number**
Apple 5
Grape 9
Orange 1
Coconut 54
Mango 22
我想:
**Fruit Number**
Apple 1
Mango 2
Coconut 3
Grape 4
Orange 5
我尝试了以下方法,但遇到语法问题
update tablename
set id = rownum
where fruit in (select fruit from table order by decode(fruit,'Apple',1,'Mango',2,'Coconut',3))
下面的查询将为您完成此操作
UPDATE table SET number =
CASE fruit
WHEN 'Apple' THEN 1
WHEN 'Mango' THEN 2
WHEN 'Coconut' THEN 3
WHEN 'Grape' THEN 4
WHEN 'Orange' THEN 5
END;
谢谢,不过桌子上还有很多水果。如何将其设置为常规值?。所以代码会对前5个进行排序,但在前5个之后,如何设置number=rowid?这不是我真正想要的。有没有办法将其合并到else语句中?e、 g.Else number=rownum(尝试了这个,但我得到了语法错误)哦,现在我明白了,给我一点时间
UPDATE table SET number =
CASE fruit
WHEN 'Apple' THEN 1
WHEN 'Mango' THEN 2
WHEN 'Coconut' THEN 3
WHEN 'Grape' THEN 4
WHEN 'Orange' THEN 5
END;