@variables
не са DECLARED
.
Или:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
или
SELECT @user_same := 1 WHERE ...
Още по-добре, това избягва необходимостта от променливата.
IF (EXISTS SELECT * FROM ...)
Също така, не използвайте конструкцията IN ( SELECT ... )
; обикновено е по-добре да използвате WHERE EXISTS ( SELECT * FROM ... )
или JOIN ... ON ...
.
(Може да има повече проблеми, след като ги поправите.)