Existem várias maneiras de fazer isso.
Você pode usar uma subconsulta:
SET @some_var = (SELECT COUNT(*) FROM mytable);
(como o seu original, basta adicionar parênteses ao redor da consulta)
ou use a sintaxe SELECT INTO para atribuir vários valores:
SELECT COUNT(*), MAX(col)
INTO @some_var, @some_other_var
FROM tab;
A sintaxe da subconsulta é um pouco mais rápida (não sei por que), mas funciona apenas para atribuir um único valor. A sintaxe select into permite definir vários valores de uma só vez, portanto, se você precisar obter vários valores da consulta, faça isso em vez de executar a consulta repetidamente para cada variável.
Finalmente, se sua consulta não retornar uma única linha, mas um conjunto de resultados, você pode usar um cursor .