2

我正在尝试更新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

我认为这意味着我不能像上面那样对同一张表使用这个查询?我不知道。
请帮助我走在正确的道路上,并使我正确。

4

2 回答 2

11

尝试以下

update pm_users 
    set user_status = case when user_status = 0 then 1 else 0 end
    where user_id = 3
于 2013-08-12T05:32:39.510 回答
0

不如试试CASE

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

SQL 小提琴演示

于 2013-08-12T05:33:41.400 回答