select count(*),snum from enrolled group by snum where count(*)=(select count(distinct(cname)) from enrolled;);
Я использую MYSQL 5,7Что случилось с этим синтаксисом?
select count(*),snum from enrolled group by snum where count(*)=(select count(distinct(cname)) from enrolled;);
Я использую MYSQL 5,7Что случилось с этим синтаксисом?
Вы не можете использовать функции агрегации в пункте where
. Вы хотите having
пункт:
select count(*), snum
from enrolled
group by snum
having count(*) = (select count(distinct cname) from enrolled);
Кроме того, только одна точка с запятой может появиться, в конце запроса. И, хотя это не синтаксическая ошибка, distinct
не является функцией, поэтому она не требует скобок.
Вы не можете использовать агрегированный термин в предложении where
. Вместо этого вы должны использовать пункт having
:
SELECT COUNT(*), snum
FROM enrolled
GROUP BY snum
HAVING COUNT(*) = COUNT(DISTINCT(cname))