Réponses:
essaye ça;
select gid
from `gd`
group by gid
having count(*) > 10
order by lastupdated desc
AND ((stock = 1 OR quantity > 0) OR (COUNT(v.id) > 0)
HAVING variations > 0 OR (stock = 1 OR quantity > 0)
Je ne suis pas sûr de ce que vous essayez de faire ... peut-être quelque chose comme
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. +1 de toute façon pour la syntaxe propre (pourrait être ma configuration, ou ms ... ahh bien).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDIT (si vous voulez juste les gids):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Juste une version académique sans clause:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
Il ne peut pas y avoir de fonctions d'agrégation (par exemple, COUNT, MAX, etc.) dans la clause A WHERE. Par conséquent, nous utilisons la clause HAVING à la place. Par conséquent, toute la requête serait similaire à ceci:
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;
- recherche de stations météorologiques avec des enregistrements demi-horaires manquants
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 de yapiskan avec un where .. in .. select
je pense que vous ne pouvez pas ajouter count()
avec where
. maintenant, voyez pourquoi ...
where
n'est pas la même chose que having
, having
signifie que vous travaillez ou traitez avec un groupe et le même travail de comptage, cela concerne également l'ensemble du groupe,
maintenant comment compter ça fonctionne comme un groupe entier
créez une table et entrez des identifiants, puis utilisez:
select count(*) from table_name
vous trouverez le total des valeurs signifie qu'il indique un groupe! ainsi where
fait ajouté avec count()
;
COUNT (*) ne peut être utilisé qu'avec HAVING et doit être utilisé après l'instruction GROUP BY Veuillez trouver l'exemple suivant:
SELECT COUNT(*), M_Director.PID FROM Movie
INNER JOIN M_Director ON Movie.MID = M_Director.MID
GROUP BY M_Director.PID
HAVING COUNT(*) > 10
ORDER BY COUNT(*) ASC