Определяемая пользователем переменная MySQL в предложении WHERE

Я хочу знать, есть ли способ использовать пользовательскую переменную в выражении WHERE, как в этом примере:

SELECT id, location, @id := 10 FROM songs WHERE id = @id

Этот запрос выполняется без ошибок, но не работает должным образом.

Ответы

Ответ 1

Недалеко от того, что предложил Майк Э., но одно утверждение:

SELECT id, location FROM songs, ( SELECT @id := 10 ) AS var WHERE id = @id;

Я использовал похожие запросы для эмуляции оконных функций в MySQL. Например. выборка строк - пример использования переменных в том же самом выражении

Ответ 2

На странице руководства MySQL в Пользовательские переменные:

Как правило, вы никогда не должны присваивать значение переменной пользователя и читать значение в пределах одного и того же оператора. Вы можете получить ожидаемые результаты, но это не гарантируется.

Итак, вы должны отделить назначение от оператора 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;