Daugiau
Dubliuojančių reikšmių paieška SQL lentelėje
Dublikatus lengva rasti naudojant vieną lauką:
SELECT name, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
Taigi, jei turime lentelę
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
Pagal šią užklausą gausime John, Sam, Tom, Tom, Tom, nes jie visi turi tą patį email
.
Tačiau aš noriu gauti dublikatus, turinčius tą patį email
ir vardą
.
T. y. noriu gauti "Tom", "Tom".
Man to reikia dėl šios priežasties: Padariau klaidą ir leidau įterpti pasikartojančias vardo
ir pašto
reikšmes. Dabar man reikia pašalinti arba pakeisti pasikartojančias reikšmes, todėl pirmiausia turiu jas surasti.
1777
3
Tiesiog sugrupuokite abu stulpelius.
Pastaba: pagal senesnį ANSI standartą GROUP BY turi būti visi nesugrupuoti stulpeliai, tačiau tai pasikeitė dėl "funkcinės priklausomybės" idėjos:
Reliacinių duomenų bazių teorijoje funkcinė priklausomybė - tai apribojimas tarp dviejų atributų rinkinių duomenų bazės santykyje. Kitaip tariant, funkcinė priklausomybė yra apribojimas, apibūdinantis ryšį tarp santykio atributų.
Palaikymas nėra nuoseklus:
sql_mode=only_full_group_by
:pabandykite tai:
IŠĖJIMAS:
jei norite gauti dublikatų ID, naudokite šį:
IŠVADOS:
norėdami ištrinti dublikatus, pabandykite:
IŠVADOS:
Išbandykite tai: