-1

いくつかの価格 123.4561、345.5671、121.3432、321.3452、1234.3423 のようなデータがあり、それぞれ記事 a、b、c、d、e の新しい価格として更新する必要があります。

私は約1000のそのような記録を持っています。

テーブル内のこれらの記事 (すべて 1000) の新しい価格 (上記のような) を更新する必要があります。

1000 個の update ステートメントを作成するのは大変な作業です。そのためにカーソルを使用することを考えていました。まだすべての価格を取得して、特定の価格にリンクすることはできません。問題は、特定の記事を新しい価格にリンクして更新する方法です。

誰でも簡単な方法を教えてもらえますか? ありがとう!

4

3 に答える 3

1

できるよ

UPDATE table1 SET price = 
CASE articles
 WHEN 'a' THEN 123.4561 
 WHEN 'b' THEN  345.5671
 ...
END   
WHERE articles IN ('a','b',....)
于 2012-04-26T20:06:40.827 に答える
1

フォーマットやデータは何ですか?メモ帳に次のような行がある場合

art1,price1 
art2,price2
art3,price3

この情報をデータベースのテーブルにインポートできます(あなたの場合、SQL Developer、Toad、または使用するIDEでインポートオプションを使用するのが最善です)、

その後、更新を発行します。

update table_articles a
set price = (select price from import_table where price = a.price);
于 2012-04-27T06:21:46.263 に答える
0

の使用を検討してくださいMERGE

以下は標準 SQL です。

WITH source
     AS
     (
      SELECT * 
        FROM (
              VALUES ( 'a' ,  123.4561 ), 
                     ( 'b' ,  345.5671 ), 
                     ( 'c' ,  121.3432 ), 
                     ( 'd' ,  321.3452 ), 
                     ( 'e' , 1234.3423 )
             ) AS T ( articles , price )
     )
MERGE INTO YourTable
   USING source
      ON source.articles = YourTable.articles
WHEN MATCHED THEN
   UPDATE
      SET price = source.price;

これに非常に近いものが Oracle によってサポートされています。共通テーブル式 (CTE) は、ステージング ベース テーブルに置き換えることができることに注意してください。

于 2012-04-27T09:40:06.277 に答える