В инструкции MySQL SELECT, как производное поле может использовать значение другого поля в списке SELECT? - PullRequest
4 голосов
/ 08 января 2012

В инструкции MySQL SELECT, как производное поле может использовать значение другого поля в списке SELECT?

Например, при выполнении следующего запроса:

SELECT
 'tim' AS first_name
,first_name || ' example' AS full_name;

Iожидаемый результат будет:

first_name, full_name
tim       , tim example

Вместо этого я получаю следующее error :

Unknown column 'first_name' in 'field list'.

Есть ли способ, которым я могу ссылаться на другой столбец?

Спасибо
Турги

Ответы [ 3 ]

9 голосов
/ 08 января 2012

Нет, вы должны повторить это или использовать производную таблицу.

select *, concat(first_name,  ' example') as full_name
 from (
select
 'tim' as first_name ) as t
4 голосов
/ 08 января 2012

С http://dev.mysql.com/doc/refman/5.0/en/problems-with-alias.html

Стандартный SQL запрещает ссылки на псевдонимы столбцов в предложении WHERE.Это ограничение наложено потому, что при оценке предложения WHERE значение столбца может еще не быть определено.

Нельзя ссылаться на столбец, значение которого еще не определено.

4 голосов
/ 08 января 2012

Вы либо заключаете запрос в подзапрос:

SELECT
    first_name
  , first_name || ' example' AS full_name
FROM
  ( SELECT
        'tim' AS first_name
      , ... 
    FROM ...
    ...
  ) AS tmp

, либо дублируете код:

SELECT
    'tim' AS first_name
  , 'tim' || ' example' AS full_name
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...