Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql Oracle-更新、解码和设置值_Sql_Database_Oracle_Oracle10g - Fatal编程技术网

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
我想:

  • 选择整个列表
  • 把“苹果、芒果、椰子”放在最前面
  • 更新当前订单,其中number=rownum
  • 清单应如下所示:

    **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;