我知道我可以像这样指定一个列别名:
SELECT stuff as mask
有没有一种方法可以指定列别名而不在结果集中返回该列数据?本质上,我希望能够通过执行以下操作使我的查询变得干净:
SELECT doManipulationStuff(cleanCompactAlias)
在哪里
reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
您可以使用公用表表达式 (CTE) 创建具有别名的子查询:
WITH clean_cte AS
(
SELECT reallyLong.misleading.andAnnoying.columnName1 as cleanCompactAlias1,
reallyLong.misleading.andAnnoying.columnName2 as cleanCompactAlias2
)
SELECT doManipulationStuff(cleanCompactAlias1),
doManipulationStuff(cleanCompactAlias2)
这样,您可以将所有别名放在 CTE 中,而在调用函数时忘记它。您仍然必须在某处进行别名处理,但这至少可以使其远离主查询,使其更具可读性。
您可以使用子查询:
select doManipulationStuff(cleanCompactAlias)
from (select t.*, reallyLong.misleading.andAnnoying.columnName as cleanCompactAlias
. . .
) t