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)如果在 Y2014 删除记录,则该年和以后的年份应更新为“0”,但 Y2014 之前的年份应保持“1”。

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

请帮忙

4

1 回答 1

0

将年份作为行并不是一个好主意。MySQL 中没有(简单的)方法可以通过列名进行比较。结果表可以通过这个查询来实现:

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

但是,您似乎想要一个更动态的版本。在这种情况下,要么必须在应用程序级别完成,要么您必须更新表以拥有更多行(id, year作为列)。然后您可以比较 ID 和年份并删除不活动年份的行。

于 2013-10-03T14:43:27.147 回答