#mysql
#mysql
Вопрос:
Извините, если об этом уже спрашивали, но поиск coalesce выдает кучу результатов, которые мне не помогают…
В mysql я пытаюсь использовать coalesce для установки начального значения для переменной, которая задается выражением, зависящим от существующего значения. Я бы очень хотел сделать это с помощью одного оператора, но у меня возникла проблема, когда значение, которое возвращается из coalesce, когда переменная равна null, кажется, не «прилипает», и я каждый раз получаю начальное значение. Странная вещь, если я изначально задаю переменной значение null, она работает так, как ожидалось.
Рассмотрим этот запрос:
select @y := coalesce(@y 1, 5)
from table
limit 5;
Он возвращает:
5
5
5
5
5
Но это:
set @z = null;
select @z := coalesce(@z 1, 5)
from table
limit 5;
Возвращает то, что я ожидаю:
5
6
7
8
9
Это ошибка или ожидаемое поведение? Является ли решение просто изначально установить для переменной значение null?
Ответ №1:
Вы можете инициализировать переменные SQL в ссылке «(выберите …) псевдоним», как показано ниже. Вам просто нужно убедиться, что вы используете псевдоним, например, я сделал как SQLVars, иначе он подавится вами. Затем вы можете создавать столько, сколько вам нужно, из любых типов данных.
select
@z := z 1 as NextNumber
from table,
( select @z := 5,
@AnotherVar := 'First Value',
@AnythingElse := 390.290 ) SQLVars
limit 5;