2010-07-24 81 views
0

這可能嗎?

update table set number2 = number where number != "" and set number, number2 = $number where number=""; 

或做我需要做的

update table set number2 = number where number != ""; 
update table set number = $number, number2 = number where number = ""; 

回答

1

我只想做他們兩個「獨立」的語句,而不必擔心試圖找到一個聰明的解決方案(這是很少聰明IMNSHO)。

你會看到我引用上面的單詞「separate」,因爲任何像樣的DBMS都會提供事務支持,這將使得這兩個語句在原子性(A中的A)方面變成一個。

換句話說,是這樣的:

start transaction; 
update table set number2 = number where number != ""; 
update table set number = $number, number2 = number where number = ""; 
commit transaction; 

這將幾乎總是被更快(假設number被索引)比一個聰明的溶液使用每行的功能,如CASEIF等,由於兩個非常快速傳球比傳球慢一些:-)