Что для списка опций в CTE используется помимо псевдонима столбцов? - PullRequest
0 голосов
/ 27 мая 2020

Используются ли параметры в общих табличных выражениях в MySQL только для псевдонимов столбцов или есть какая-либо другая утилита, которую они предоставляют?

Например, если у меня есть следующий CTE:

WITH cte_name (column1_frinedly_name, column2_friendly_name) AS (
    SELECT column1, column2
    FROM tables
)
SELECT *
FROM cte_name;

... он возвращает те же результаты, что и:

WITH cte_name AS (
    SELECT column1 as column1_frinedly_name, column2 as column2_friendly_name
    FROM tables
)
SELECT *
FROM cte_name;

Есть ли другие причины, по которым можно было бы использовать параметры CTE в скобках, кроме переименования результирующих столбцов?

1 Ответ

1 голос
/ 27 мая 2020

Вы также можете указать псевдоним для столбцов, у которых нет полезных имен, например, если вы используете выражения:

mysql> with cte (x, y, z) as ( select 1+1, concat('a','b','c'), null ) select * from cte;
+---+------+------+
| x | y    | z    |
+---+------+------+
| 2 | abc  | NULL |
+---+------+------+

Важно объявить отдельные имена для всех столбцов в CTE. Повторяющиеся имена столбцов не допускаются. Поэтому, если запрос, определенный в вашем CTE, является объединением или чем-то в этом роде, может быть важно указать имена столбцов.

...