@variables
não são DECLARED
. Ou:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
ou
SELECT @user_same := 1 WHERE ...
Melhor ainda, isso evita a necessidade da variável.
IF (EXISTS SELECT * FROM ...)
Além disso, não use a construção
IN ( SELECT ... )
; geralmente é melhor usar WHERE EXISTS ( SELECT * FROM ... )
ou JOIN ... ON ...
. (Pode haver mais problemas depois de corrigi-los.)