Как правило, вы никогда не должны присваивать значение переменной пользователя и читать значение в пределах одного и того же оператора. Вы можете получить ожидаемые результаты, но это не гарантируется.
Итак, вы должны отделить назначение от оператора select:
SET @id = 10;
SELECT id, location, @id FROM songs WHERE id = @id;
Ответ 3
Конечно, но я никогда не видел, чтобы кто-нибудь пытался установить переменную и использовать ее в том же самом заявлении, что и вы. Попробуйте:
SET @id := 10;
SELECT @id := 10 FROM songs WHERE id = @id;
или
SELECT @id := 10 FROM songs;
SELECT @id := 10 FROM songs WHERE id = @id;
Я использовал оба, и оба они работают для меня.
Ответ 4
Это сработало для меня!
SET @identifier = 7;
SELECT * FROM test where identifier = @identifier;