外部結合を使用して、テーブル内の重複を見つけたいと思います。
テーブルにプライマリ インデックス ID がある場合、次の外部結合で重複した名前を見つけることができます。
mysql> select * from gifts;
+--------+------------+-----------------+---------------------+
| giftID | name | filename | effectiveTime |
+--------+------------+-----------------+---------------------+
| 2 | teddy bear | bear.jpg | 2010-04-24 04:36:03 |
| 3 | coffee | coffee123.jpg | 2010-04-24 05:10:43 |
| 6 | beer | beer_glass.png | 2010-04-24 05:18:12 |
| 10 | heart | heart_shape.jpg | 2010-04-24 05:11:29 |
| 11 | ice tea | icetea.jpg | 2010-04-24 05:19:53 |
| 12 | cash | cash.png | 2010-04-24 05:27:44 |
| 13 | chocolate | choco.jpg | 2010-04-25 04:04:31 |
| 14 | coffee | latte.jpg | 2010-04-27 05:49:52 |
| 15 | coffee | espresso.jpg | 2010-04-27 06:03:03 |
+--------+------------+-----------------+---------------------+
9 rows in set (0.00 sec)
mysql> select * from gifts g1 LEFT JOIN (select * from gifts group by name) g2
on g1.giftID = g2.giftID where g2.giftID IS NULL;
+--------+--------+--------------+---------------------+--------+------+----------+---------------+
| giftID | name | filename | effectiveTime | giftID | name | filename | effectiveTime |
+--------+--------+--------------+---------------------+--------+------+----------+---------------+
| 14 | coffee | latte.jpg | 2010-04-27 05:49:52 | NULL | NULL | NULL | NULL |
| 15 | coffee | espresso.jpg | 2010-04-27 06:03:03 | NULL | NULL | NULL | NULL |
+--------+--------+--------------+---------------------+--------+------+----------+---------------+
2 rows in set (0.00 sec)
しかし、テーブルにプライマリ インデックス ID がない場合でも、重複を見つけるために外部結合を使用できるでしょうか?
PS 外部結合以外のソリューションにも感謝します。可能であればPrimary IDのインデックスがない場合に外部結合でできるか確認したいです。助けてくれてありがとう。