Відповіді:
спробуйте це;
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;
EDIT (якщо ви просто хочете діток):
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