-1

私はテーブルを持っています。

**Fruit   Number**
Apple     5
Grape     9
Orange    1
Coconut   54
Mango     22

したい :

  1. リスト全体を選択
  2. 「アップル、マンゴー、ココナッツ」をリストの一番上に置きます。
  3. 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))
4

2 に答える 2

0
UPDATE (
    SELECT ROWNUM+5 AS r, fruit, number FROM TABLE
    WHERE fruit NOT IN ('Apple', 'Mango', 'Coconut', 'Grape', 'Orange')
    UNION
    SELECT 1 AS r, 'Apple' AS fruit, number FROM TABLE
    UNION
    SELECT 2 AS r, 'Mango' AS fruit, number FROM TABLE
    UNION
    SELECT 3 AS r, 'Coconut' AS fruit, number FROM TABLE
    UNION
    SELECT 4 AS r, 'Grape' AS fruit, number FROM TABLE
    UNION
    SELECT 5 AS r, 'Orange' AS fruit, number FROM TABLE
) 
SET number = r;
于 2013-04-09T14:18:56.767 に答える
0

次のクエリがそれを行います。

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;
于 2013-04-09T14:20:54.710 に答える