2012-11-09 38 views
2

我遇到以下問題。我有一個名爲titles結構如下表:Mysql根據列輸入動態更新行

id int(10), 
name varchar(100), 

在某一點後,我們增加了一個名爲modified_name新列。它被定義爲與name相同,區別在於它是小寫字母,並將所有空格替換爲-。我們添加了該列,因此我們需要現在將正確的修改名稱值存入該列的每個記錄中。爲此,我們編寫了一個PHP腳本,通過從數據庫中加載值並處理它們來處理該腳本,但這非常低效。是否可以編寫一個UPDATE查詢,以便將正確的值添加到titles表中的每個記錄中。我可以考慮使用存儲過程和while循環執行此操作的方法,但是我想知道是否可以提高效率。它有什麼辦法可以實現類似以下內容:

UPDATE `titles` 
    SET 
`modified_name` = LOWER(REPLACE(SELECT `name` FROM `titles` WHERE id = PRESENT_VALUE), ' ', '-'); 

,目的是爲了集中的每個記錄的modified_title列在titles表中的唯一值從該記錄的name列結果如下:

# Before modification update query 
name = "Hello Goodbye" 
modified_name = ""  

# After modification update 
name = "Hello Goodbye" 
modified_name = "hello-goodbye" 

感謝您的幫助,任何建議如何最好地做到這一點將不勝感激。

回答

1
UPDATE `titles` SET `modified_name` = LOWER(REPLACE(`name`, ' ', '-')) 
+0

哇,完美的工作。我不知道這種類型的操作是可能的。這對我今後肯定會有很大的幫助。謝謝。 – usumoio