使用某些条件更新特定行值MYSQL

时间:2018-08-17 01:52:39

标签: mysql

我有一个表,其中id,jml_tetangga,tetangga1,tetangga 2为列

id jml_tetangga tetangga1 tetangga2
1  0            6         7
2  0            3         NULL
3  0            2         6
5  0            NULL      NULL

我需要帮助,以根据tetangga1和/或tetangga2是否为空更新每行的jml_tetangga ,如果tetangga1的值不为null,则jml_tetangga的值将为+1,如果tetangga1和tetangga2不为null,则jml_tetangga将为+2

结果看起来像这样(在这种情况下,没有ID 4,因为ID为4的行已被删除)

id jml_tetangga tetangga1 tetangga2
1  2            6         7
2  1            3         NULL
3  2            2         6
5  0            NULL      NULL

我已经尝试过了

update dosen_matkul 
set jumlah_tetangga = 
case when (select tetangga1 from dosen_matkul where id=1) IS NULL THEN 1 
else 0 END,
jumlah_tetangga = 
case when (select tetangga2 from dosen_matkul where id=1) IS NULL THEN 2 
else 0 END where id =1

但我收到错误1093,怎么办?

1 个答案:

答案 0 :(得分:1)

您的查询已结束,但语法有些错误。试试这个版本:

UPDATE dosen_matkul 
SET jml_tetangga = CASE WHEN tetangga1 IS NOT NULL AND tetangga2 IS NOT NULL
                        THEN jml_tetangga + 2
                        WHEN tetangga1 IS NOT NULL
                        THEN jml_tetangga + 1
                        ELSE jml_tetangga END;

enter image description here

以下是演示,显示所使用的更新逻辑正确:

Demo