2015-09-04 81 views
0

我原來的查詢是這樣的:MySQL的更新兩列

UPDATE myTable 
    SET period = IF(period > 1, period - 1, 13), 
     year = IF(period = 1, year - 1, year) 

但由於SET的第二部分使用期限的剛剛成立的版本,所以現在有沒有一個記錄查詢失敗期限爲1。我想在單個查詢中執行此操作 - 建議?

+0

如果我理解正確的問題,你可以只換你的SET語句的順序。例如:先設置年份,然後是期間。 – CollinD

+0

@CollinDriscoll,事實上,我認爲。我想我也在抽象中尋找解決方案;當你在更新後需要更新後的「原始」值時,你會做什麼?或者根本沒有選擇? –

+0

我想你應該使用WHERE子句來代替。我知道它在功能上並不相同,但在這種情況下使用這些內聯IF似乎有問題。 'UPDATE myTable set period = period -1,year = year -1 WHERE period = 1'類似的東西。 – CollinD

回答

0

不知道什麼是你的目標,但你可以改變你的第二個條件period=13

http://sqlfiddle.com/#!9/8cb38/1

UPDATE myTable 
    SET period = IF(period > 1, period - 1, 13), 
     year = IF(period = 13, year - 1, year)