我一整天都在用SQL中的一个非常简单的case语句挣扎......
我有这段代码:
UPDATE `alugueis`
SET `status` = CASE
WHEN `pago_em` is null THEN 'Atrasado'
WHEN `pago_em` is '' THEN 'Atrasado'
ELSE `status`
END
WHERE `vencimento` <= CURDATE()
,我得到的错误是:[1064] [42000] :( conn:235)你的SQL语法有错误;检查手册.......
我认为我混淆了两种形式的CASE,或者我是吗?
非常感谢你!
答案 0 :(得分:1)
我想你打算:
UPDATE alugueis
SET status = (CASE WHEN pago_em is null THEN 'Atrasado'
WHEN pago_em = '' THEN 'Atrasado'
ELSE status
END)
WHERE vencimento <= CURDATE();
问题是is ''
。
通常在没有CASE
:
UPDATE alugueis
SET status = 'Atrasado'
WHERE vencimento <= CURDATE() AND
(pago_em IS NULL OR pago_em = '')
答案 1 :(得分:0)
您无法使用IS ''
UPDATE `alugueis`
SET `status` = CASE
WHEN `pago_em` is null THEN 'Atrasado'
WHEN `pago_em` = '' THEN 'Atrasado'
ELSE `status`
END
WHERE `vencimento` <= CURDATE()