Определяемая пользователем переменная 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;