Respuestas:
prueba esto;
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)
No estoy seguro de lo que estás tratando de hacer ... tal vez algo como
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. +1 de todos modos para la sintaxis limpia (podría ser mi configuración, o ms ... ahh bien).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDITAR (si solo quieres los gids):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Solo versión académica sin tener cláusula:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
No puede haber funciones agregadas (Ej. COUNT, MAX, etc.) en la cláusula A WHERE. Por lo tanto, usamos la cláusula HAVING en su lugar. Por lo tanto, toda la consulta sería similar a esto:
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;
- buscando estaciones meteorológicas con registros faltantes cada media hora
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;
- variación de yapiskan con un donde .. en .. seleccione
Creo que no se puede agregar count()
con where
. ahora ve por qué ...
where
no es igual que having
,having
significa que está trabajando o tratando con el grupo y el mismo trabajo de conteo, también está tratando con todo el grupo,
ahora cómo cuenta está funcionando como grupo completo
crea una tabla e ingresa algunas identificaciones y luego usa:
select count(*) from table_name
¡encontrará los valores totales significa que está indicando algún grupo! también where
lo agrega con count()
;
COUNT (*) solo se puede usar con HAVING y se debe usar después de la instrucción GROUP BY. Busque el siguiente ejemplo:
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