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 に答える