Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 除了列别名外,CTE中的选项列表还使用了什么?_Mysql_Common Table Expression - Fatal编程技术网

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

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的括号参数?

您也可以为没有有用名称的列提供别名,如使用表达式:

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中定义的查询是连接或其他内容,那么提供列名称可能很重要