Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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 表中的多个更新_Sql_Oracle_Sql Update - Fatal编程技术网

Sql 表中的多个更新

Sql 表中的多个更新,sql,oracle,sql-update,Sql,Oracle,Sql Update,我有一些数据,比如一些价格123.4561、345.5671、121.3432、321.3452、1234.3423,需要分别更新为a、b、c、d、e条的新价格 我有大约1000张这样的记录 我需要在一个表中更新这些文章(全部1000篇)的新价格(如上所述) 编写1000条更新语句将是一项繁忙的工作。我正在考虑使用光标来执行此操作。仍然无法将所有价格与特定价格联系起来。 问题是如何将某一特定商品与其新价格联系起来并进行更新 有谁能给我一些更简单的建议吗?谢谢 你能行 UPDATE table1

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

我有大约1000张这样的记录

我需要在一个表中更新这些文章(全部1000篇)的新价格(如上所述)

编写1000条更新语句将是一项繁忙的工作。我正在考虑使用光标来执行此操作。仍然无法将所有价格与特定价格联系起来。 问题是如何将某一特定商品与其新价格联系起来并进行更新

有谁能给我一些更简单的建议吗?谢谢

你能行

UPDATE table1 SET price = 
CASE articles
 WHEN 'a' THEN 123.4561 
 WHEN 'b' THEN  345.5671
 ...
END   
WHERE articles IN ('a','b',....)

格式或数据是什么?如果你的记事本上有这样的线条

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);
考虑使用

以下是标准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)可能会被分段基表替换。

新价格在哪里?在桌子上?档案?@David Aldridge在档案里。我把所有的新价格都记在记事本上了。。您可以假设。如果服务器可以访问该文件,或者可以访问该文件,则可以将其作为外部表访问,并使用MERGE语句更新现有记录。这也会增加新的数据,如果有的话。文件中有什么数据?如果只是新的价格而没有其他任何东西,如何确定表中要更新的正确行?请不要用此信息创建其他评论-编辑您的帖子并在那里添加信息。@Bob Jarvis我已经在我的问题中提到过“我有一些数据,比如价格123.4561、345.5671、121.3432、321.3452、1234.3423,需要分别作为a、b、c、d、e文章的新价格进行更新。”我有这篇文章和它各自的新价格数据。希望这能澄清。我已经想到这件事了。。我正在寻找一种方法来应用一些循环,并分别更新文章的价格。有办法吗?