Ich möchte so etwas machen:
SELECT *
FROM db.table
WHERE COUNT(someField) > 1
Wie kann ich dies in MySql erreichen?
Verwenden Sie die HAVING
not- WHERE
Klausel für den Vergleich der Gesamtergebnisse.
Nehmen Sie die Abfrage zum Nennwert:
SELECT *
FROM db.table
HAVING COUNT(someField) > 1
Idealerweise sollte GROUP BY
in der HAVING
Klausel eine Definition für die ordnungsgemäße Bewertung enthalten sein, aber MySQL erlaubt versteckte Spalten aus der GROUP BY ...
Ist dies in Vorbereitung auf eine einzigartige Einschränkung someField
? Sieht so aus, als sollte es sein ...
GROUP BY
sicher (es sei denn, dies ist eine MySQL-Nicht-Standard-Sache)?someField
Werte enthält, oder eine leere Ergebnismenge, wenn dies nicht der Fall ist.quelle
Sie können dies auch mit einem Self-Join tun:
quelle
Bitte schön:
quelle
Einweg
quelle
Wie OMG Ponies sagte, ist die Haben-Klausel genau das, wonach Sie suchen. Wenn Sie jedoch gehofft haben, dass Sie diskrete Zeilen anstelle einer Zusammenfassung erhalten (das "Haben" erstellt eine Zusammenfassung), kann dies nicht in einer einzelnen Anweisung erfolgen. In diesem Fall müssen Sie zwei Anweisungen verwenden.
quelle
Ich gebe ein Beispiel für Group By zwischen zwei Tabellen in SQL:
Select cn.name,ct.name,count(ct.id) totalcity from city ct left join country cn on ct.countryid = cn.id Group By cn.name,ct.name Having totalcity > 2
quelle
Für mich hat das Fehlen einer Gruppe nur ein leeres Ergebnis zurückgegeben. Ich denke, es ist ziemlich wichtig, eine Gruppe für die Aussage zu haben
quelle
Es sollte auch erwähnt werden, dass das "pk" ein Schlüsselfeld sein sollte. Die Selbstverbindung
von Bill Karwin geben Sie alle Aufzeichnungen, die Duplikate sind, was ich wollte. Da einige mehr als zwei haben, können Sie denselben Datensatz mehrmals erhalten. Ich habe alles in eine andere Tabelle mit denselben Feldern geschrieben, um dieselben Datensätze durch Unterdrückung von Schlüsselfeldern zu entfernen. Ich habe es versucht
SELECT * FROM db.table HAVING COUNT(someField) > 1
oben zuerst. Die von ihm zurückgegebenen Daten geben nur eines der Duplikate an, weniger als die Hälfte dessen, was Sie erhalten, aber die Anzahl ist gut, wenn das alles ist, was Sie wollen.
quelle