webentwicklung-frage-antwort-db.com.de

MySQL - Verwenden von COUNT (*) in der WHERE-Klausel

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 eine Verschwendung von Ressourcen zu sein scheint.

146
Ice

versuche dies;

select gid
from `Gd`
group by gid 
having count(*) > 10
order by lastupdated desc
249
Ali Ersöz

Ich bin mir nicht sicher, was Sie versuchen ... vielleicht so etwas

SELECT gid, COUNT(*) AS num FROM Gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
26
Greg
SELECT COUNT(*)
FROM `Gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;

BEARBEITEN (wenn Sie nur die Gids wollen):

SELECT MIN(gid)
FROM `Gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
15
Winston Smith

versuchen

SELECT DISTINCT gid
FROM `Gd`
group by gid
having count(*) > 10
ORDER BY max(lastupdated) DESC
14
sme

Nur akademische Version ohne Klausel:

select *
from (
   select gid, count(*) as tmpcount from Gd group by gid
) as tmp
where tmpcount > 10;
12

In der A WHERE-Klausel dürfen keine Aggregatfunktionen (z. B. COUNT, MAX usw.) enthalten sein. Daher verwenden wir stattdessen die HAVING-Klausel. Daher würde die gesamte Abfrage ungefähr so ​​aussehen:

SELECT column_name, aggregate_function(column_name)
FROM table_name
WHERE column_name operator value
GROUP BY column_name
HAVING aggregate_function(column_name) operator value;
8
pushkarr

- Suche nach Wetterstationen mit fehlenden halbstündlichen Aufzeichnungen

SELECT stationid
FROM weather_data 
WHERE  `Timestamp` LIKE '2011-11-15 %'  AND 
stationid IN (SELECT `ID` FROM `weather_stations`)
GROUP BY stationid 
HAVING COUNT(*) != 48;

- Variation von Yapiskan mit einem wo .. in .. auswählen

6
zzapper

ich denke, Sie können nicht count() mit where hinzufügen. jetzt mal sehen warum ....

where ist nicht dasselbe wie having, having bedeutet, dass Sie mit einer Gruppe arbeiten oder es mit derselben Arbeit zu tun haben, sondern mit der gesamten Gruppe.

nun, wie viel zählt es, als ganze Gruppe zu arbeiten

erstelle eine Tabelle und gib einige IDs ein und benutze dann:

select count(*) from table_name

sie werden feststellen, dass die Gesamtwerte bedeuten, dass es sich um eine Gruppe handelt! also wird where mit count() hinzugefügt;

1
Tushar Pandey