-1

我有一些数据,比如一些价格 123.4561、345.5671、121.3432、321.3452、1234.3423,它们需要分别更新为文章 a、b、c、d、e 的新价格。

我有大约 1000 条这样的记录。

我需要在表格中更新这些文章(全部 1000)的新价格(如上)。

编写 1000 条更新语句将是一项繁重的工作。我正在考虑使用光标来做到这一点。仍然无法获取所有价格并将它们与特定价格联系起来。问题是如何将特定文章与其新价格联系起来并进行更新。

有人可以建议任何更简单的方法吗?谢谢!

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 回答