Iskanje podvojenih vrednosti v tabeli SQL
Z enim poljem zlahka najdete podvojitve:
SELECT name, COUNT(email)
FROM users
GROUP BY email
HAVING COUNT(email) > 1
Če imamo torej tabelo
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
Ta poizvedba nam bo dala John, Sam, Tom, Tom, ker imajo vsi isti email
.
Vendar pa želim dobiti podvojene osebe z istim naslovom
in imenom
.
To pomeni, da želim dobiti "Tom", "Tom".
Razlog, zakaj to potrebujem: Naredil sem napako in dovolil vstaviti podvojene vrednosti name
in email
. Zdaj moram podvojene vrednosti odstraniti/spremeniti, zato jih moram najprej najti.
1777
3
Preprosto združite oba stolpca.
Opomba: po starejšem standardu ANSI naj bi bili v GROUP BY vsi stolpci, ki niso združeni, vendar se je to spremenilo z idejo "funkcionalne odvisnosti":
V teoriji relacijskih podatkovnih baz je funkcionalna odvisnost omejitev med dvema nizoma atributov v relaciji iz podatkovne baze. Z drugimi besedami, funkcionalna odvisnost je omejitev, ki opisuje razmerje med atributi v relaciji.
Podpora ni dosledna:
sql_mode=only_full_group_by
:poskusite to:
OUTPUT:
če želite ID dvojnikov, uporabite to:
OUTPUT:
za brisanje podvojitev poskusite:
IZHODIŠČE:
Poskusite to: