Sql 表中的多个更新
我有一些数据,比如一些价格123.4561、345.5671、121.3432、321.3452、1234.3423,需要分别更新为a、b、c、d、e条的新价格 我有大约1000张这样的记录 我需要在一个表中更新这些文章(全部1000篇)的新价格(如上所述) 编写1000条更新语句将是一项繁忙的工作。我正在考虑使用光标来执行此操作。仍然无法将所有价格与特定价格联系起来。 问题是如何将某一特定商品与其新价格联系起来并进行更新 有谁能给我一些更简单的建议吗?谢谢 你能行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
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文章的新价格进行更新。”我有这篇文章和它各自的新价格数据。希望这能澄清。我已经想到这件事了。。我正在寻找一种方法来应用一些循环,并分别更新文章的价格。有办法吗?