← Все вопросы

Как переименовать столбец в результате запроса SQL (AS и алиасы)?

Задан 1 месяц назад687 просмотров2 ответа
8

В выводе вычисляемого столбца у меня заголовок выглядит как COUNT(*) или price * 1.2, что некрасиво. Как переименовать столбец в результате запроса? Что такое алиас и обязательно ли слово AS?

2 ответа

12
✓ Принятый ответ — помог автору

Дать столбцу понятное имя в выводе помогает алиас через ключевое слово AS:

SELECT
  COUNT(*) AS total_orders,
  price * 1.2 AS price_with_tax,
  name AS customer_name
FROM orders;

Теперь в результате колонки будут называться total_orders, price_with_tax, customer_name.

Слово AS необязательно — можно просто поставить имя через пробел, результат тот же:

SELECT COUNT(*) total_orders FROM orders;

Но с AS читается яснее, и большинство стилей кода рекомендуют его писать.

Если в алиасе нужны пробелы или спецсимволы — берите его в двойные кавычки (Postgres/стандарт) или обратные кавычки/квадратные скобки (MySQL/SQL Server):

SELECT price * 1.2 AS "Цена с НДС" FROM products;

Алиасы бывают и для таблиц, что сокращает JOIN-ы:

SELECT o.id, c.name
FROM orders AS o
JOIN customers AS c ON o.customer_id = c.id;

Важная тонкость: алиас столбца из SELECT обычно нельзя использовать в WHERE (он вычисляется позже), но можно в ORDER BY и GROUP BY в большинстве СУБД. Например, ORDER BY price_with_tax сработает, а WHERE price_with_tax > 100 чаще всего — нет.

4

Запомните порядок выполнения, и станет ясно, где алиас доступен: FROM → WHERE → GROUP BY → HAVING → SELECT → ORDER BY. Алиас рождается на шаге SELECT, поэтому всё, что идёт до (WHERE, обычно и GROUP BY/HAVING) его «не видит», а ORDER BY идёт после и видит. Если очень нужен вычисляемый столбец в WHERE — повторите всё выражение или заверните запрос в подзапрос.

Ваш ответ

Войдите, чтобы ответить на вопрос.