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 ....
whereaynı grupla çalıştığınız veya uğraştığınız anlamına gelir having, havingaynı 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 whereekledi 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