我有一个表,其中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,怎么办?
答案 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;
以下是演示,显示所使用的更新逻辑正确: