Подтвердить что ты не робот

Как псевдоним поля или столбца в MySQL?

Я пытаюсь сделать что-то подобное. Но я получаю неизвестную ошибку столбца:

SELECT SUM(field1 + field2) AS col1, col1 + field3 AS col3 from core

В принципе, я хочу просто использовать псевдоним, чтобы мне не нужно было выполнять ранее выполненные операции. Возможно ли это в mysql?

4b9b3361

Ответ 1

Рассмотрим использование подзапроса, например:

SELECT col1
,      col1 + field3 AS col3 
FROM   (
       SELECT  field1 + field2 as col1
       ,       field3
       from    core
       ) as SubQueryAlias

Ответ 2

select @code:= SUM(field1 + field2), @code+1 from abc;

Но, пожалуйста, помните следующее (из MySQL 5.6 docs):

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

SET @a = @a + 1;

Для других операторов, таких как SELECT, вы можете получить ожидаемые результаты, но это не гарантируется. В следующем утверждении вы можете подумать, что MySQL сначала оценит @a, а затем выполнит второе занятие:

SELECT @a, @a:[email protected]+1, ...;

Однако порядок оценки выражений с использованием пользовательских переменных undefined.

Итак, используйте на свой страх и риск.

Ответ 3

Вы можете select псевдоним:

SELECT SUM(field1 + field2) AS col1, (select col1) + field3 AS col3 from core

Это работает.

Ответ 4

В соответствии с спецификация Ответ Рави Пареха не гарантируется всегда, так как "порядок оценки выражений с использованием пользовательских переменных undefined".

Я нашел этот ответ после того, как попытался использовать переменную и получил странные результаты.

Ответ 5

select @code:= SUM(field1 + field2), (@code*1) from abc;

@code * 1 скрытый в числовое выражение, и вы можете использовать в любом месте, например

select @code:= SUM(field1 + field2), (@code*1)+field3 from abc;

Ответ 6

Короткий ответ:

mysql> select 1 as a, a + 1 as b;
ERROR 1054 (42S22): Unknown column 'a' in 'field list'

postgresql# select 1 as a, a + 1 as b;
ERROR:  column "a" does not exist

Тем не менее, некоторые реализации SQL позволяют использовать псевдонимы в том, где /group имеют/имеющие предложения, например:

postgresql# select 1 as a group by a; -- 1 row

Ответ 7

В случае, если вы используете его с агрегатной функцией (group by), и если он не работает для вас, поместите вычисляемый столбец в конец с помощью прямой ссылки на столбец.

SELECT FNC2(AF), FNC1(A) AS AF,  B, C,  FROM Table GROUP BY ...

1st one doesn't work due to forward column referencing. Do this instead 

SELECT FNC1(A) AS AF, B, C, FNC2((SELECT AF)) FROM Table GROUP BY ...