Ich muss eine select-Anweisung ausführen, die alle Zeilen zurückgibt, in denen der Wert einer Spalte nicht eindeutig ist (z. B. EmailAddress).
Zum Beispiel, wenn die Tabelle wie folgt aussieht:
CustomerName EmailAddress
Aaron aaron@gmail.com
Christy aaron@gmail.com
Jason jason@gmail.com
Eric eric@gmail.com
John aaron@gmail.com
Ich brauche die Abfrage, um zurückzukehren:
Aaron aaron@gmail.com
Christy aaron@gmail.com
John aaron@gmail.com
Ich habe viele Beiträge gelesen und verschiedene Fragen ohne Erfolg ausprobiert. Die Abfrage, von der ich glaube, dass sie funktionieren sollte, ist unten. Kann mir jemand eine Alternative vorschlagen oder mir sagen, was mit meiner Anfrage falsch sein könnte?
select EmailAddress, CustomerName from Customers
group by EmailAddress, CustomerName
having COUNT(distinct(EmailAddress)) > 1
sql
sql-server
sql-server-2008
Heuschrecke
quelle
quelle
HAVING
hier statt einer Sekunde verwenden,SELECT...WHERE
handelt es sich um eine einzelne Abfrage anstelle der zweiten Option, die diesen zweitenSELECT...WHERE
Aufruf viele Male ausführt . Weitere Informationen finden Sie[EmailAddress] must appear in the GROUP BY clause or be used in an aggregate function
Fehler. Ist das einzige Update - das Bearbeitensql_mode
?[EmailAddress]
IS in derGROUP BY
KlauselWas bei Ihrer Abfrage falsch ist, ist, dass Sie nach E-Mail und Namen gruppieren, die eine Gruppe jedes einzelnen Satzes von E-Mail und Namen bilden, die zusammen und somit kombiniert werden
werden als 3 verschiedene Gruppen behandelt, die alle zu einer einzigen Gruppe gehören.
Bitte verwenden Sie die unten angegebene Abfrage:
quelle
Wie wäre es mit
quelle
quelle
Nur zum Spaß, hier ist ein anderer Weg:
quelle
Anstatt Unterabfragen in einem Where-Zustand zu verwenden, erhöht sich die Abfragezeit bei großen Datensätzen.
Ich würde vorschlagen, Inner Join als bessere Option für dieses Problem zu verwenden.
In Anbetracht derselben Tabelle könnte dies das Ergebnis ergeben
Für noch bessere Ergebnisse würde ich Ihnen empfehlen, ein
CustomerID
beliebiges Feld Ihrer Tabelle zu verwenden. Eine Vervielfältigung vonCustomerName
ist möglich.quelle
Nun, es gibt eine kleine Änderung, um die nicht unterschiedlichen Zeilen zu finden.
quelle