我有一些数据,如某些价格123.4561,345.5671,121.3432,321.3452,1234.3423,需要分别更新为商品a,b,c,d,e的新价格。
我有1000个这样的记录。
我需要在表格中更新这些文章(全部1000个)的新价格(如上所述)。
编写1000个更新语句将是一项忙碌的工作。我正在考虑使用光标这样做。仍然无法承担所有价格并将其与特定价格联系起来。 问题是如何将特定文章与其新价格相关联并进行更新。
任何人都可以建议任何更简单的方法吗?谢谢!
答案 0 :(得分:1)
你可以做到
UPDATE table1 SET price =
CASE articles
WHEN 'a' THEN 123.4561
WHEN 'b' THEN 345.5671
...
END
WHERE articles IN ('a','b',....)
答案 1 :(得分:1)
格式或数据是什么?如果你的记事本有像
这样的行art1,price1
art2,price2
art3,price3
您可以将此信息导入数据库中的表(最好是在SQL Developer,Toad或您使用的任何IDE中使用import optio),
然后发布更新:
update table_articles a
set price = (select price from import_table where price = a.price);
答案 2 :(得分: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)可以替换为分段基表。