Odpowiedzi:
Spróbuj tego;
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)
Nie jestem pewien, co próbujesz zrobić ... może coś takiego
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. W każdym razie +1 dla czystej składni (może to być moja konfiguracja lub ms ... ahh cóż).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
EDYTUJ (jeśli chcesz tylko gidy):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Tylko wersja akademicka bez klauzuli:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
W klauzuli A WHERE nie może być funkcji agregujących (np. COUNT, MAX itp.). Dlatego zamiast tego używamy klauzuli HAVING. Dlatego całe zapytanie byłoby podobne do tego:
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;
- wyszukiwanie stacji meteorologicznych z brakującymi zapisami półgodzinnymi
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;
- odmiana yapiskan z gdzie… w… wybierz
myślę, że nie możesz dodać za count()
pomocą where
. teraz zobacz, dlaczego ....
where
to nie to samo co having
, having
oznacza, że pracujesz lub masz do czynienia z grupą i taką samą pracą liczenia, to także dotyczy całej grupy,
teraz jak liczyć to działa jako cała grupa
utwórz tabelę i wprowadź jakieś identyfikatory, a następnie użyj:
select count(*) from table_name
znajdziesz wartości całkowite, które oznaczają jakąś grupę! tak też where
jest dodane z count()
;
LICZBA (*) może być używane tylko z HAVING i musi być używane po wyrażeniu GROUP BY Poniżej znajduje się następujący przykład:
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