1

これは単純な構文の問題であることを私は知っています。サブクエリからすべてのユーザーを削除しようとしています:

delete from users
where id IN (

select u.id
from users u 
where not exists (select * from stickies i where i.user_id = u.id) 
group by u.email 
having count(*) > 1

)

このエラーの取得:

error : You can't specify target table 'users' for update in FROM clause

サブクエリは正常に機能します(ユーザーIDのリストを返します)。

4

1 に答える 1

3
DELETE u.*
FROM users u JOIN (
    SELECT u.id
    FROM users u LEFT JOIN stickies i ON i.user_id = u.id
    WHERE i.user_id IS NULL
    GROUP BY u.email 
    HAVING COUNT(*) > 1
  ) r ON r.id = r.id

注:内部クエリでは、電子メールでグループ化していますが、ユーザーIDを選択しています。これにより、非決定論的な結果が返される場合があります。

于 2011-02-13T16:53:51.690 に答える