Почему столбец результата подзапроса не использует мой псевдоним в качестве имени столбца?

Это мой запрос:

SELECT  messages.*, 
        units.*, 
        MAX(messages.created_at) AS 'conversation_date', 
        (select count(*) as messages from messages where unit_id = units.id), 
        WEEKOFYEAR(MAX(messages.created_at)) as 'woy', 
        YEAR(MAX(messages.created_at)) as 'year',
        classifications.description AS 'classification'
FROM    messages 
JOIN    units ON units.id = messages.unit_id
JOIN    classifications ON units.classification_id = classifications.id
WHERE   from_id <> units.creator_id GROUP BY messages.unit_id, from_id, to_id

Я пытаюсь назвать 4-ую колонку "messages", но имя возвращается буквально "(select count(*) as messages from messages where unit_id = units.id)"

Что я делаю неправильно?

1 ответ

Чтобы присвоить результату подзапроса имя (то есть псевдоним), вы не помещаете псевдоним внутри подзапроса, вы кодируете его вне подзапроса, например:

select
...
(select count(*) from messages where unit_id = units.id) as messages
...

Без указания псевдонима для всего подзапроса имя столбца, данное результату подзапроса, является самим подзапросом (который является вашим заданным вопросом) - последним предложением).

Другие вопросы по тегам