0

テーブルにデータ汚染があり、それを削除するのに苦労しています...汚染の原因を修正したので、再び発生することはありませんが、削除する必要があるレコードがたくさんあり、やり方が分からなくて困っています。

問題の性質は次のとおりです。

userIds と groupIds を持つテーブルがあります。ユーザーが複数のグループに存在することは有効であるため、これは一意の関連付けで解決できるものではありません。

私の場合、グループ 4 と 5 は相互に排他的であるとしましょう (つまり、ユーザーは両方に属することはできません)。

user_groups テーブルで削除を実行する必要があります (英語で): userID = X および groupID = 4 の場合、この行を削除します。userID = X および groupID = 5 の行もある場合。

groupID = 4 のすべての行を削除するのではなく、groupID = 5 を含む行を持つユーザーに適用される行のみを削除します。

すべてのヘルプは大歓迎です。

4

1 に答える 1

1

これにより、グループ 5 に重複しているグループ 4 のすべてのユーザーが削除されます。

DELETE FROM user_groups AS G1 
WHERE G1.groupID=4 
  AND G1.userID IN (SELECT G2.userID FROM user_groups 
                    WHERE G2.userID=G1.userID AND G2.GroupID=5)
于 2012-07-09T23:24:29.000 に答える