SQL使用列名别名而不选择
我知道我可以指定如下列别名:SQL使用列名别名而不选择,sql,select,alias,Sql,Select,Alias,我知道我可以指定如下列别名: SELECT stuff as mask 有没有一种方法可以指定列别名而不在结果集中返回该列数据?基本上,我希望能够通过以下操作使我的查询变得干净: SELECT doManipulationStuff(cleanCompactAlias) 在哪里 您可以使用子查询: select doManipulationStuff(cleanCompactAlias) from (select t.*, reallyLong.misleading.andAnnoying.
SELECT stuff as mask
有没有一种方法可以指定列别名而不在结果集中返回该列数据?基本上,我希望能够通过以下操作使我的查询变得干净:
SELECT doManipulationStuff(cleanCompactAlias)
在哪里
您可以使用子查询:
select doManipulationStuff(cleanCompactAlias)
from (select t.*, reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
. . .
) t
可以使用公共表表达式(CTE)创建具有别名的子查询:
WITH clean_cte AS
(
SELECT reallyLong.misleading.andAnnoying.columnName1 as cleanCompactAlias1,
reallyLong.misleading.andAnnoying.columnName2 as cleanCompactAlias2
)
SELECT doManipulationStuff(cleanCompactAlias1),
doManipulationStuff(cleanCompactAlias2)
这样,您就可以将所有别名放在CTE中,在调用函数时就可以忘记它。您仍然需要在某个地方进行别名处理,但这至少可以将其排除在主查询之外,以使其更具可读性。…仅当您使用的SQL Server版本支持它时。还有其他支持CTE的RDBMS。但要点是——并不是所有人都支持这种语法。我相信MySQL没有。
WITH clean_cte AS
(
SELECT reallyLong.misleading.andAnnoying.columnName1 as cleanCompactAlias1,
reallyLong.misleading.andAnnoying.columnName2 as cleanCompactAlias2
)
SELECT doManipulationStuff(cleanCompactAlias1),
doManipulationStuff(cleanCompactAlias2)