0
update moodlesocialuser 
set moodlesocialuser.deleted=deleted+1 
where id IN (
  select m1.id 
  from moodlesocialuser m1 
  join moodlesocialpost m2 on m1.id=m2.userid 
  where m2.module='blog' 
  and m1.deleted='0' 
  and url like 'http%' 
  and m1.id NOT IN (
    select id from moodlesocialcourse_display
  ) 
);

同じテーブルから更新して選択することはできません。

エラー 1093 (HY000): FROM 句で更新対象テーブル 'moodlesocialuser' を指定することはできません。

これどうやってするの?

4

4 に答える 4

0

選択しているテーブルを変更することはできません(詳細はこちらを参照)。一方、このように、そのサブクエリを取り除くことができると思います(以下のクエリが実際に機能するとは思いません。価値のないデータでテストした方がよいでしょう。私が言おうとしているのは、更新にも参加できます):

UPDATE moodlesocialuser mu, moodlesocialcourse_display md, moodlesocialpost mp
SET mu.deleted=mu.deleted + 1 
WHERE
md.id != mu.id AND
mu.deleted = 0 AND
mp.userid = mu.id AND
mp.module = 'blog' AND
mp.url LIKE 'http%'
于 2013-07-25T08:45:55.103 に答える