我有一些数据,如某些价格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条更新语句将是一件繁忙的工作。我正在考虑用光标来做。仍然无法获得所有价格并将它们连接到特定的价格。 问题是如何将特定文章与其新价格链接并更新它。
任何人都可以请建议任何更简单的方法?谢谢!
是什么格式或数据?如果你的记事本有一个像
art1,price1
art2,price2
art3,price3
线,你可以将此信息导入到数据库中的表(最好在你的情况是使用SQL开发,蟾蜍进口OPTIO,或者任何你使用IDE),
,然后发出一个更新:
update table_articles a
set price = (select price from import_table where price = a.price);
你可以做
UPDATE table1 SET price =
CASE articles
WHEN 'a' THEN 123.4561
WHEN 'b' THEN 345.5671
...
END
WHERE articles IN ('a','b',....)
我已经有了这个事情..我正在寻找一种方法来应用一些循环,并分别为文章更新价格。有什么办法吗? – prashant1988 2012-04-27 05:20:13
考虑使用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-26 19:08:55
@David Aldridge在一个文件中。我有记事本中的所有新价格..你可以假设。 – prashant1988 2012-04-27 05:17:56
如果服务器可以访问该文件,或者可以访问该文件,则可以将其作为外部表访问并使用MERGE语句更新现有记录。如果有的话,这也会增加新的。 – 2012-04-27 11:17:28