为啥选择不同存储的'As T'以及如何别名?

Posted

技术标签:

【中文标题】为啥选择不同存储的\'As T\'以及如何别名?【英文标题】:Why Select Distinct stored 'As T' and how to alias?为什么选择不同存储的'As T'以及如何别名? 【发布时间】:2020-01-20 13:27:18 【问题描述】:

根据 ***.com (How do I count unique items in field in Access query?) 上另一个问题的有用回复,答案包含:

SELECT Count(*) AS N
FROM
(SELECT DISTINCT Name FROM table1) AS T;

为什么不同的选择别名为“As T”(即不是为什么字母 T,而是为什么这样做?)

如果您遇到以下情况:

SELECT Count(Long_Table_Name_Here.[Field1]) AS N
FROM
(SELECT DISTINCT Field1 FROM Long_Table_Name_Here) AS T;

你怎么还能给长表名取别名?

【问题讨论】:

【参考方案1】:

因为 MS Access 要求 FROM 子句中引用的每个“对象”都有一个名称。表有一个默认名称——即它们的名称。 (实际上,您可以使用多部分名称或仅使用表名。)

至于您的第二个查询:

SELECT Count(Long_Table_Name_Here.[Field1]) AS N
FROM (SELECT DISTINCT Field1 FROM Long_Table_Name_Here) AS T;

这将导致语法错误,因为未定义 Long_Table_Name_Here。您需要使用FROM 子句中定义的表别名:

SELECT Count(T.[Field1]) AS N
FROM (SELECT DISTINCT Field1 FROM Long_Table_Name_Here) AS T;

【讨论】:

以上是关于为啥选择不同存储的'As T'以及如何别名?的主要内容,如果未能解决你的问题,请参考以下文章

TypeORM 选择列名的别名

为啥 hive 无法识别选择部分中命名的别名?

为啥没有使用关键字“AS”设置列别名?

Doctrine 2 多个选择元素、别名、日期格式

如何选择数据库存储引擎

选择非索引列将“发送数据”增加 25 倍 - 为啥以及如何改进?