我是MYSQL的新手,我试图这样做:
UPDATE team
SET member1 = IF(member1=0, 001, SET member2 = IF(member2=0, 001, member2)) WHERE ID = ?;
这不起作用,解释: 每个"成员"有一个不同的数字(001,002,003 ......),我想把会员" 001"在表格" member1"但如果这是ocupated(它的值不同于0)设置成员" 001"在表格" member2" (一个不同的表)但我认为不可能将一个SET放在IF中。身份证并不重要。
感谢您的关注^^
答案 0 :(得分:1)
不,你不能加入SET
这样的陈述。它必须解决:
UPDATE `team`
SET
`member2` = CASE WHEN `member1` = 0 AND `member2` = 0 THEN '001' ELSE `member2` END,
`member1` = CASE WHEN `member1` = 0 THEN '001' ELSE `member1` END
WHERE
`id` = ?
/* optional filter: considering adding it if it does not bother the performance: */
AND (`member1` != 0 OR `member2` != 0)
;
注意:
CASE/WHEN
代替IF
,因为IF
不是ansi sql(它特定于mysql)