2013-10-03 50 views
1

我的表更新數據根據年度

+----+-------+-------+-------+ 
| ID | Y2013 | Y2014 | Y2015 | 
+----+-------+-------+-------+ 
| 1 |  1 |  1 |  1 | 
| 2 |  1 |  1 |  1 | 
| 3 |  1 |  1 |  1 | 
| 4 |  1 |  1 |  1 | 
+----+-------+-------+-------+ 

小提琴:http://www.sqlfiddle.com/#!2/f2e2e/1

在這裏,我試圖刪除/按年更新的記錄。如果在2013年年底刪除記錄,則從該年到今年的其餘時間應更新爲「0」。例如:(ID-2)如果一條記錄在2014年年底刪除,則該年份和下一年份應更新爲'0',但2014年之前的年份應保持爲'1'。

+----+-------+-------+-------+ 
| ID | Y2013 | Y2014 | Y2015 | 
+----+-------+-------+-------+ 
| 1 |  1 |  1 |  1 | 
| 2 |  1 |  0 |  0 | 
| 3 |  1 |  1 |  1 | 
| 4 |  1 |  1 |  1 | 
+----+-------+-------+-------+ 

請幫助

回答

0

具有年行是不是一個好主意。 MySQL中沒有(簡單的)通過列名進行比較的方式。由此產生的表可以通過以下查詢來實現:

UPDATE myTable SET Y2014 = 0, Y2015 = 0 WHERE ID = 2 

然而,它似乎是你想要一個更加動態的版本。在這種情況下,它必須在應用程序級別完成,或者必須更新您的表以獲得更多行(使用id, year作爲列)。然後,您可以比較ID和年份,並刪除非活動年份的行。

+0

謝謝我的朋友。其實我不是在尋找一個更新查詢。是否有可能動態地做到這一點? – user2594154

+0

@ user2594154正如我在我的回答中解釋的那樣,因爲你必須提前知道列名。唯一的解決方法是更改​​表結構,以便檢查行內容並與其進行比較。 –