@variables non sono DECLARED .
O:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
o
SELECT @user_same := 1 WHERE ...
Meglio ancora, questo evita la necessità della variabile.
IF (EXISTS SELECT * FROM ...)
Inoltre, non utilizzare il costrutto IN ( SELECT ... ); di solito è meglio usare WHERE EXISTS ( SELECT * FROM ... ) o JOIN ... ON ... .
(Potrebbero esserci altri problemi dopo averli risolti.)