Daha
SQL tablosunda yinelenen değerleri bulma
Tek bir alanla kopyaları bulmak kolaydır:
SELECT name, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
Yani eğer bir tablomuz varsa
ID NAME EMAIL
1 John asd@asd.com
2 Sam asd@asd.com
3 Tom asd@asd.com
4 Bob bob@asd.com
5 Tom asd@asd.com
Bu sorgu bize John, Sam, Tom, Tom'u verecektir çünkü hepsi aynı email
e sahiptir.
Ancak, istediğim şey aynı email
ve name
ile kopyaları almak.
Yani, "Tom", "Tom"'u almak istiyorum.
Buna ihtiyacım olmasının sebebi: Bir hata yaptım ve yinelenen name
ve email
değerlerinin eklenmesine izin verdim. Şimdi kopyaları kaldırmam/değiştirmem gerekiyor, bu yüzden önce onları bulmam gerekiyor.
1777
3
Her iki sütunda da gruplama yapmanız yeterlidir.
Not: Eski ANSI standardı, GROUP BY içinde tüm toplanmamış sütunların bulunmasıdır, ancak bu "işlevsel bağımlılık" fikriyle değişmiştir:
İlişkisel veritabanı teorisinde, işlevsel bağımlılık, bir veritabanındaki bir ilişkideki iki nitelik kümesi arasındaki bir kısıtlamadır. Başka bir deyişle, fonksiyonel bağımlılık, bir ilişkideki nitelikler arasındaki ilişkiyi tanımlayan bir kısıtlamadır.
Destek tutarlı değildir:
sql_mode=only_full_group_by
kullanmanız gerekir:Bunu dene:
ÇIKIŞ:
eğer yedeklerin ID'lerini istiyorsanız bunu kullanın:
ÇIKIŞ:
kopyaları silmek için deneyin:
ÇIKIŞ:
Bunu dene: