2017-04-07 6 views
0

は私が削除したい場合、私はMySQLで別のテーブルにテーブルとその対応するデータから重複行を削除

id Email 
----------- 
1 [email protected] 
2 [email protected] 
3 [email protected] 
4 [email protected] 
5 [email protected] 

、別のテーブル今

id userId  name 
--------------------- 
1 1   A 
2 2   B 
3 3   C 
4 4   D 
5 5   E 

、次のようにテーブル構造を持って考えてみましょうテーブル1からの重複、すなわち 2, 3, 4, 5は、 table1とそれに対応するデータから table2に削除する必要があります。

どうすればよいですか?
これは可能ですか?

+0

on delete deleteカスケードの組み合わせで外部キーを使用します。この[リンク](https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html) – rahulsm

+0

をご覧くださいhttp://stackoverflow.com/a/15548724/2681855 – ManiMuthuPandi

答えて

0

DMLの方法で、テーブルで次のクエリを試してください(テーブルに従って編集してください)。注:削除はロールバックできます。

DELETE t1 
FROM t1, holdkey 
WHERE t1.col1 = holdkey.col1 
AND t1.col2 = holdkey.col2 
+0

重複して削除する必要があります。 – user7573053

+0

上記のクエリは削除のお手伝いをします。重複を検索するには、 メールを選択してください(*)からGROUP BY GROUPメールを受信する(*)> 1 詳細:http://stackoverflow.com/questions/2594829/finding-duplicate-values-in -a-sql-table – hamzox

+0

私は既に試したことがあります。 – user7573053

1

コードの下に使用していずれかを維持することによって、ユーザテーブルから重複行を削除する最初の試み:

DELETE FROM `user` WHERE `id` NOT IN (select * from (SELECT MIN(`id`) FROM `user` GROUP BY `email`) as t) 

第二に従うことによって、別のテーブルから他の従属行を削除しよう:

DELETE FROM `user_data` WHERE `u_id` NOT IN (select * from (SELECT MIN(`id`) FROM `user` GROUP BY `email`) as t) 

これはあなたのために働くことを願っています。

+0

"in"の代わりに "exists"を試してみませんか? – denny

関連する問題