Ich versuche Folgendes in MySQL zu erreichen (siehe pseudo
Code)
SELECT DISTINCT gid
FROM `gd`
WHERE COUNT(*) > 10
ORDER BY lastupdated DESC
Gibt es eine Möglichkeit, dies zu tun, ohne ein (SELECT ...) in der WHERE-Klausel zu verwenden, da dies wie eine Verschwendung von Ressourcen erscheint.
mysql
count
aggregation
having
shgnInc
quelle
quelle
AND ((stock = 1 OR quantity > 0) OR (COUNT(v.id) > 0)
HAVING variations > 0 OR (stock = 1 OR quantity > 0)
Ich bin mir nicht sicher, was du versuchst ... vielleicht so etwas
quelle
num
. +1 sowieso für die saubere Syntax (könnte mein Setup sein, oder ms ... ahh gut).BEARBEITEN (wenn Sie nur die Gids wollen):
quelle
Versuchen
quelle
Nur akademische Version ohne Klausel:
quelle
Die A WHERE-Klausel darf keine Aggregatfunktionen (z. B. COUNT, MAX usw.) enthalten. Daher verwenden wir stattdessen die HAVING-Klausel. Daher wäre die gesamte Abfrage ähnlich:
quelle
- Suche nach Wetterstationen mit fehlenden halbstündlichen Aufzeichnungen
- Variation von Yapiskan mit einem wo .. in .. auswählen
quelle
Ich glaube , Sie können nicht hinzufügen
count()
mitwhere
. Jetzt sehen Sie warum ...where
ist nicht dasselbe wiehaving
,having
bedeutet , dass Sie arbeiten oder mit einer Gruppe und derselben Zählarbeit arbeiten, es befasst sich auch mit der gesamten Gruppe,Nun, wie zählt es, als ganze Gruppe zu arbeiten
Erstellen Sie eine Tabelle, geben Sie einige IDs ein und verwenden Sie dann:
Sie werden feststellen, dass die Gesamtwerte bedeuten, dass eine Gruppe angezeigt wird! so
where
fügt hinzu mitcount()
;quelle
quelle