@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.)