2015-11-03 116 views
2

我有十列稱爲image1,image2 ... image10,我想更新一列的值爲一個新值,但它只能更新一列等於我提供的價值。MySQL - 設置任意一列等於一個值

例如,讓提供的值爲1,我想將其更改爲諸如「C:/ folder/subfolder」之類的字符串。

我在想有沒有if語句如「if image1 = 1 set image1 =」C:/ folder/subfolder「else if image2 = 1 set image2 =」C:/ folder/subfolder「等?

+0

首先,請閱讀[這](http://dev.mysql.com/doc/refman/5.7/en/update.html)也許四處瀏覽[這裏](HTTP://dev.mysql .COM/DOC/refman/5.7/EN /檢索 - data.html)。 – Kenney

+0

在存儲過程中,是的。 – Shadow

+1

發現了一個類似的問題[here](http://stackoverflow.com/questions/14893355/mysql-update-a-field-only-if-condition-is-met) – Alderin

回答

1

你可以使用IF快遞離子。如果它與提供的值匹配,則返回新值,否則返回舊值(因此它對該列沒有影響)。

UPDATE tableName 
    SET image1 = IF(image1 = '1', 'C:/folder/subfolder', image1), 
     image2 = IF(image2 = '1', 'C:/folder/subfolder', image2), 
     image3 = IF(image3 = '1', 'C:/folder/subfolder', image3), 
     ... 
WHERE '1' IN (image1, image2, image3, ...) 
0

WHERE條款可能是你需要在你的SQL什麼喜歡的東西:。

UPDATE images SET image1="C:/folder/subfolder" WHERE image1="1"; 

可能不是完整的答案,但我認爲這可能會在正確的道路上幫助

+0

您需要重複該語句每列。 – Barmar

相關問題