我有这个查询:
SELECT owner,
CASE WHEN id IN (1,2,4) THEN 25
ELSE
CASE WHEN owner = 25 THEN NULL
END as owner
FROM board2
并收到此错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'as owner
FROM board2' at line 9
我的错误是什么?
例:
id - 所有者 - 结果所有者
2 - 4 - 7(已选择ID且所有者已更改
3 - 7 - 7(已选择ID且所有者已更改
4 - 7 - NULL(未选择id,所有者与新的所有者相同,因此所有者设置为NULL
5 - 4 - 4(id未选中,所有者不是新所有者,没有变更
x =(2,3)(必须改变的ids)
y = 7(新主人)
答案 0 :(得分:0)
不确定这是你想要的逻辑(你有两个CASE,而不是一个有不同的替代品): SELECT所有者, 案件 当id(1,2,4)那么25 其他 结束 案件 当所有者= 25那么空 其他 结束 来自board2
如果没有,那么你不能在第二种情况下拥有WHEN,并且可能想要使用IF,ELSEIF,ELSE,END IF。
答案 1 :(得分:0)
case-when
中存在语法问题,此外您选择owner
2次,这也是错误
它应该是
SELECT owner,
CASE
WHEN id IN (1,2,4) THEN 25
WHEN owner = 25 THEN NULL
else 'ABC' ---- better to provide else other wise non-matching data will be selected as null, give something as you want
END as `some_other_col_name` --- a different col name since owner is already selected on the top
FROM board2