@variables
nie są DECLARED
.
Albo:
DECLARE user_same BOOLEAN;
SELECT 1 INTO user_same WHERE ...
lub
SELECT @user_same := 1 WHERE ...
Co więcej, pozwala to uniknąć konieczności stosowania zmiennej.
IF (EXISTS SELECT * FROM ...)
Nie używaj również konstrukcji IN ( SELECT ... )
; zwykle lepiej jest użyć WHERE EXISTS ( SELECT * FROM ... )
lub JOIN ... ON ...
.
(Po naprawieniu tych problemów może być więcej problemów).