Respostas:
tente isso;
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)
Não tenho certeza do que você está tentando fazer ... talvez algo como
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. +1 de qualquer maneira para a sintaxe limpa (pode ser minha configuração ou ms ... ahh bem).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDIT (se você quiser apenas os gids):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Apenas versão acadêmica sem cláusula:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
Não pode haver funções agregadas (por exemplo, COUNT, MAX, etc.) na cláusula A WHERE. Portanto, usamos a cláusula HAVING. Portanto, toda a consulta seria semelhante a esta:
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;
- procurando estações meteorológicas com registros perdidos a cada meia 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;
- variação de yapiskan com um onde .. em .. selecione
Eu acho que você não pode adicionar count()
com where
. agora veja por que ....
where
não é o mesmo que having
, having
significa que você está trabalhando ou lidando com um grupo e com o mesmo trabalho, mas também com todo o grupo,
agora como contar está funcionando como um grupo inteiro
crie uma tabela e insira alguns IDs e use:
select count(*) from table_name
você encontrará os valores totais significa que está indicando algum grupo! assim where
que adicionado com count()
;
COUNT (*) só pode ser usado com HAVING e deve ser usado após a instrução GROUP BY. Encontre o seguinte exemplo:
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