У меня есть следующий фрагмент
select user_id into @selected_user from users where mail = 'mymail@gmail.com';
select * from kc_network_user where user_id = 'previous_id';
, который я хочу изменить, чтобы он был параметри c. Я нашел следующие ресурсы:
- Использование переменных в SQL script
- Как объявить переменную в MySQL?
- Объявление переменных - MySQL Workbench выдает ошибку с DECLARE
Вот что я сделал:
select @user_mail := 'mymail@gmail.com'; #1
select @user_mail; #2
select user_id into @selected_user from user where mail = @user_mail; #3
select @selected_user;
select * from user_network where user_id = @selected_user; #4
В select #1
Я также попробовал следующее:
set @user_mail = 'mymail@gmail.com';
select #2
возвращает правильное значение, поэтому переменная инициализируется.
select #3
возвращает следующую ошибку:
Код ошибки: 1267. Недопустимое сочетание параметров сортировки (utf8mb4_unicode_ci, IMPLICIT) и (utf8mb4_general_ci, IMPLICIT) для операции '='
Пока select #4
работает правильно (если я установил параметр mail с буквальным значением).
В чем разница между этими запросами? Как установить переменную перед выполнением запроса?