https://stackoverflow.com/a/11177086/1947965
上記の正解リンクから、別の質問をフォローアップしたいと思います。私がやりたいのは、このフィールドのセットが空のときにフィールドのセットを更新することだけです。それ以外の場合は、単一の列だけでなく、別のフィールドのセットに更新します。別の状況を次に示します。
1.)フィールドsubjectColumnA, timeColumnA, dataColumnA
を更新する場合。NULL
2.)subjectColumnA, timeColumnA, dataColumnA
がNot NULL
ANDの場合はフィールドsubjectColumnB, 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, and 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 );