Ответы:
попробуй это;
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)
Я не уверен, что вы пытаетесь сделать ... может быть, что-то вроде
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. +1 в любом случае для чистого синтаксиса (может быть, мои настройки, или мс ... ааа хорошо).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
РЕДАКТИРОВАТЬ (если вы просто хотите, чтобы уроки):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Просто академическая версия без оговорок:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
В предложении WHERE не может быть агрегатных функций (например, COUNT, MAX и т. Д.). Следовательно, вместо этого мы используем предложение HAVING. Поэтому весь запрос будет похож на это:
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;
Я думаю, вы не можете добавить count()
с where
. теперь понятно почему ....
where
это не то же самое having
, что having
означает, что вы работаете или имеете дело с группой и выполняете одинаковую работу, это также касается всей группы,
Теперь, как рассчитывать это работает как целая группа
создайте таблицу и введите некоторые идентификаторы, а затем используйте:
select count(*) from table_name
Вы найдете общие значения означает, что это указывает на какую-то группу! так where
же добавил с count()
;
COUNT (*) может использоваться только с HAVING и должен использоваться после оператора GROUP BY. Найдите следующий пример:
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