如果durasi_pre_u
的基本值大于0,我想从durasi_pre_u
减去1(-1)值,并在Premium
时将Member
更新为durasi_pre_u
值= 0。
这是我尝试的
UPDATE user
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u),
pangkat_u = IF(durasi_pre_u <> 1 AND pangkat_u = 'Premium', pangkat_u = 'Member', pangkat_u)
此代码有效-1 durasi_pre_u
,但不起作用,将Premium
更改为Member
我尝试遵循此网站https://www.w3resource.com/mysql/control-flow-functions/if-function.php上的教程
答案 0 :(得分:1)
您的查询中有一个错误,首先,您只想在pangkat_u
的当前值为1(因此即将更改为0)时更改durasi_pre_u
的值,因此您需要将<>
更改为=
。其次,将pangkat_u = 'Member'
作为新值,MySQL将其视为布尔表达式(即值1或0)。您真正想要的只是'Member'
。因此,您的查询应为:
UPDATE user
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u),
pangkat_u = IF(durasi_pre_u = 1 AND pangkat_u = 'Premium', 'Member', pangkat_u)
答案 1 :(得分:0)
在If
函数中,只需要指定要设置为true或false的值即可。不要指定字段名称=值(pangkat_u = 'Member'
)
使用以下内容:
UPDATE user
SET durasi_pre_u = IF(durasi_pre_u > 0, durasi_pre_u - 1, durasi_pre_u),
pangkat_u = IF(durasi_pre_u <> 1 AND pangkat_u = 'Premium', 'Member', pangkat_u)