Yanıtlar:
bunu dene;
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)
Ne yapmaya çalıştığınızdan emin değilim ... belki böyle bir şey
SELECT gid, COUNT(*) AS num FROM gd GROUP BY gid HAVING num > 10 ORDER BY lastupdated DESC
num
. Temiz sözdizimi için yine de +1 (kurulumum olabilir veya ms ... ahh iyi olabilir).
SELECT COUNT(*)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC;
DÜZENLE (sadece kapakları istiyorsanız):
SELECT MIN(gid)
FROM `gd`
GROUP BY gid
HAVING COUNT(gid) > 10
ORDER BY lastupdated DESC
Madde olmadan sadece akademik sürüm:
select *
from (
select gid, count(*) as tmpcount from gd group by gid
) as tmp
where tmpcount > 10;
Bir WHERE yan tümcesinde toplama işlevleri (Örn. COUNT, MAX vb.) Olamaz. Bu nedenle bunun yerine HAVING yan tümcesini kullanıyoruz. Bu nedenle, tüm sorgu şuna benzer:
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;
i ekleyemezsiniz düşünüyorum count()
ile where
. şimdi nedenini gör ....
where
aynı grupla çalıştığınız veya uğraştığınız anlamına gelir having
, having
aynı sayım çalışmasıyla, aynı zamanda tüm grupla da ilgileniyorsa,
şimdi nasıl sayılır bütün grup olarak çalışıyor
bir tablo oluşturun ve bazı kimlikler girin ve şunu kullanın:
select count(*) from table_name
toplam değerleri bulacaksınız bazı grup anlamına gelir! böylece where
ekledi count()
;
COUNT (*) yalnızca HAVING ile kullanılabilir ve GROUP BY deyiminden sonra kullanılmalıdır. Lütfen aşağıdaki örneği bulun:
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