Има няколко начина да направите това.
Можете да използвате подзаявка:
SET @some_var = (SELECT COUNT(*) FROM mytable);
(като вашия оригинал, просто добавете скоби около заявката)
или използвайте синтаксиса SELECT INTO, за да присвоите множество стойности:
SELECT COUNT(*), MAX(col)
INTO @some_var, @some_other_var
FROM tab;
Синтаксисът на подзаявката е малко по-бърз (не знам защо), но работи само за присвояване на една стойност. Синтаксисът select into ви позволява да зададете няколко стойности наведнъж, така че ако трябва да вземете няколко стойности от заявката, трябва да направите това, вместо да изпълнявате заявката отново и отново за всяка променлива.
И накрая, ако вашата заявка връща не един ред, а набор от резултати, можете да използвате курсор .