@variables
no son DECLARED
.
O bien:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
o
SELECT @user_same := 1 WHERE ...
Mejor aún, esto evita la necesidad de la variable.
IF (EXISTS SELECT * FROM ...)
Además, no use la construcción IN ( SELECT ... )
; por lo general, es mejor usar WHERE EXISTS ( SELECT * FROM ... )
o JOIN ... ON ...
.
(Puede haber más problemas después de solucionarlos).