Непонятно, зачем вам это делать в том же заявлении. Легко выполнить два оператора, и это делает код намного проще для написания и понимания. Вы всегда должны учитывать, как разработчик, который сменит вас на работе над вашим кодом, поймет и поддержит его.
SET @variable = 'Value';
SELECT ... FROM your_table WHERE a_column = @variable;
Если вам нужно сделать это в одном утверждении, я бы сделал это следующим образом:
SELECT ... FROM your_table
CROSS JOIN (SELECT @variable := 'Value') AS _init
WHERE a_column = @variable;
Делая это в производной таблице, присваивание выполняется только один раз. Если вы делаете это в списке выбора, как вы показали в своем решении, оно выполняет присваивание столько раз, сколько строк возвращается внутренним запросом. Это не имеет большого значения, если присваивание для постоянного значения, но если вашей переменной присваивается результат дорогостоящего выражения, оно будет медленным.