我有一些数据,比如一些价格 123.4561、345.5671、121.3432、321.3452、1234.3423,它们需要分别更新为文章 a、b、c、d、e 的新价格。
我有大约 1000 条这样的记录。
我需要在表格中更新这些文章(全部 1000)的新价格(如上)。
编写 1000 条更新语句将是一项繁重的工作。我正在考虑使用光标来做到这一点。仍然无法获取所有价格并将它们与特定价格联系起来。问题是如何将特定文章与其新价格联系起来并进行更新。
有人可以建议任何更简单的方法吗?谢谢!
我有一些数据,比如一些价格 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);
考虑使用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) 可能会替换为暂存基表。