我有一些數據,如某些價格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