@variables nie są DECLARED .
Albo:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
lub
SELECT @user_same := 1 WHERE ...
Co więcej, pozwala to uniknąć konieczności stosowania zmiennej.
IF (EXISTS SELECT * FROM ...)
Nie używaj również konstrukcji IN ( SELECT ... ); zwykle lepiej jest użyć WHERE EXISTS ( SELECT * FROM ... ) lub JOIN ... ON ... .
(Po naprawieniu tych problemów może być więcej problemów).