Mysql 除了列别名外,CTE中的选项列表还使用了什么?
MySQL中公共表表达式中的参数是否仅用于列别名,或者它们是否提供了任何其他实用程序 例如,如果我有以下CTE:Mysql 除了列别名外,CTE中的选项列表还使用了什么?,mysql,common-table-expression,Mysql,Common Table Expression,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 c
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的括号参数?您也可以为没有有用名称的列提供别名,如使用表达式:
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中定义的查询是连接或其他内容,那么提供列名称可能很重要