使用MySQL中的IF ELSE Con​​dition更新相同的表

时间:2013-08-12 05:23:20

标签: mysql sql

我正在尝试更新条件为user_status的文件:

update pm_users 
    set user_status = if ( 
      (select u.user_status from pm_users u where u.user_id = 3
      ) = '1', '0', '1' )
    where user_id = 3

表示如果user_status = 1,则将状态更新为0,如果用户状态为0,则为1。

我收到错误:You can't specify target table 'pm_users' for update in FROM clause

我认为这意味着我不能像上面那样使用这个查询同一个表吗?我不确定。
请帮助我走正确的路,让我纠正。

2 个答案:

答案 0 :(得分:10)

尝试以下

update pm_users 
    set user_status = case when user_status = 0 then 1 else 0 end
    where user_id = 3

答案 1 :(得分:0)

而不是尝试CASE

update pm_users 
    set user_status = CASE WHEN user_status = '1' THEN '0' ELSE '1' END
WHERE user_id = 3

SQL Fiddle DEMO