https://stackoverflow.com/a/11177086/1947965
从上面的正确答案链接我想跟进另一个问题。因为我要做的就是在这组字段为空时更新一组字段,否则更新到另一组字段而不仅仅是单个列。这是另一种情况:
1.) 如果subjectColumnA, timeColumnA, dataColumnA
是NULL
更新字段。
2.) 如果subjectColumnA, timeColumnA, dataColumnA
是Not NULL
ANDsubjectColumnB, timeColumnB, dataColumnB
是NULL
更新字段subjectColumnB, timeColumnB, dataColumnB
等等。. .
从@ravinder 的查询我想问有这种情况:让我们说这是表的内容
+------+------+------+------+------+------+------+------+------+------+
| id | AAA1 | BBB1 | CCC1 | AAA2 | BBB2 | CCC2 | AAA3 | BBB3 | CCC3 |
+------+------+------+------+------+------+------+------+------+------+
| 1 | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+------+------+------+------+------+
根据上述条件,我提到了“AAA1、BBB1 和 CCC1”,NULL
因此这些列将被更新。结果会是这样。
+------+------+------+------+------+------+------+------+------+------+
| id | AAA1 | BBB1 | CCC1 | AAA2 | BBB2 | CCC2 | AAA3 | BBB3 | CCC3 |
+------+------+------+------+------+------+------+------+------+------+
| 1 | 2 | 2 | 2 | NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+------+------+------+------+------+
另一种情况是,当“AAA1,BBB1,CCC1”为“NOT NULL”时,“AAA2,BBB2,CCC2”将被更新,结果将是这样的。
+------+------+------+------+------+------+------+------+------+------+
| id | AAA1 | BBB1 | CCC1 | AAA2 | BBB2 | CCC2 | AAA3 | BBB3 | CCC3 |
+------+------+------+------+------+------+------+------+------+------+
| 1 | 3 | 3 | 3 | NULL | NULL | NULL | NULL | NULL | NULL |
+------+------+------+------+------+------+------+------+------+------+
是否可以??由于我从其他问题和答案中读到的内容使用 CASE 和 If 仅使用 2 个参数。我试过这样的查询,但它失败了。
UPDATE table SET
AAA3 = IF( AAA2 IS NOT NULL, 2, AAA3 ) AND BBB3 = IF( BBB2 IS NOT NULL, 2, BBB3 ),
AAA2 = IF( AAA1 IS NOT NULL, 2, AAA2 ) AND BBB2 = IF( BBB1 IS NOT NULL, 2, BBB2 ),
AAA1 = IF( AAA1 IS NULL, 1, AAA1 ) AND BBB1 = IF( AAA1 IS NULL, 1, BBB1 );