当前位置:首页 > AI技术 > 正文内容

AS关键字输出字段名称最佳实践|Duuu笔记

admin7个月前 (03-31)AI技术205

AS别名在SQL中需用引号包裹含空格/特殊字符的名称,ORDER BY可有限使用别名而GROUP BY不可,表别名AS可省略但视图/CTE中必须,别名影响视图接口与下游兼容性。

SELECT 中用

AS

给字段起别名,但别名里不能有空格或特殊字符

直接写

SELECT name AS full name

会报错,因为

full name

被解析成两个标识符。MySQL、PostgreSQL、SQL Server 都一样。

解决方法只有两种:

AS "full name"

(双引号,PostgreSQL/SQL Server 支持)或

AS `full name`

(反引号,MySQL 专用)。SQLite 用双引号,Oracle 用双引号但要求别名全大写才不报错。

别名含空格、连字符、中文时,必须加引号包裹,否则语法错误

别名不含特殊字符时,

AS

可省略,

SELECT name fullname

是合法的,但可读性差,不推荐

别名是临时的,不影响原表结构,也不影响后续

WHERE

或

GROUP BY

—— 它们只能引用原始列名或表达式,不能用别名(除非在子查询或 CTE 里)

在

ORDER BY

和

GROUP BY

中能不能用

AS

别名?

不能直接用 —— 大多数数据库(MySQL 5.7+、PostgreSQL、SQL Server)在

ORDER BY

中允许用别名,但在

GROUP BY

中不行。Oracle 和老版本 MySQL 甚至

ORDER BY

也不认。

比如

SELECT user_id, COUNT(*) AS cnt FROM logs GROUP BY cnt

会报错:

ERROR: column "cnt" does not exist

。因为

GROUP BY

执行早于

SELECT

列计算,别名还没生成。

ORDER BY

是唯一可能“认”别名的地方,但靠不住,建议统一用原始列或位置序号(如

ORDER BY 2

)

GROUP BY

必须写原始列名、表达式,或重复整个聚合表达式(如

GROUP BY user_id, COUNT(*)

不合法,得写

GROUP BY user_id

)

想按别名分组?包一层子查询:

SELECT * FROM (SELECT user_id, COUNT(*) AS cnt FROM logs) t GROUP BY t.cnt

用

AS

给表起别名时,为什么有时候写

JOIN users u

比

JOIN users AS u

更常见?

因为表别名的

AS

关键字在所有主流 SQL 方言中都是可选的,而且省略后更紧凑。写

FROM orders o JOIN users u ON o.user_id = u.id

是标准实践,加

AS

反而显得冗余。

Action Figure AI

借助Action Figure AI的先进技术,瞬间将照片转化为定制动作人偶。

下载

但注意:如果表名是关键字(比如叫

order

),又用了别名,那

AS

就不能省 ——

FROM order o

会语法报错,必须写

FROM order AS o

或换引号:

FROM `order` o

。

表别名不用

AS

是惯例,不是规范强制,但团队协作时保持一致更重要

视图或 CTE 中定义别名时,

AS

是必须的,比如

WITH active_users AS (SELECT * FROM users WHERE status = 'active')

嵌套子查询里,别名不可省略,且必须跟在右括号后:

(SELECT id FROM logs) AS sub

,漏掉

AS

在 PostgreSQL 和 SQL Server 会报错

AS

别名在视图和导出场景下的实际影响

创建视图时用

AS

定义的字段名,会成为视图的“公开列名”。下游应用查这个视图时看到的就是别名,不是原始列名。这点容易被忽略,尤其当原始列名带下划线(

created_at

)而别名用驼峰(

createdAt

)时,前端代码可能直接依赖后者。

导出 CSV 或对接 BI 工具时,别名会作为表头输出。但如果用了引号包裹的别名(如

AS "User Name"

),某些旧版工具可能无法识别空格,导致字段错位。

视图中别名一旦定下,就该当作接口契约维护;改别名等于破坏下游兼容性

BI 工具或 ORM 映射时,优先读取列名而非注释,所以别名比注释更关键

别名长度受限:SQL Server 最长 128 字符,MySQL 是 64 字节(中文算多字节),超长会被截断且无警告

别名看着只是改个名字,但它在执行顺序、跨方言兼容、下游消费三个层面都藏着隐性约束。最常踩的坑不是不会写,而是写了之后没意识到它在哪能用、在哪不能用、以及改了会影响谁。

相关文章

【大数据分析 | 深度学习】在Hadoop上实现分布式深度学习

一、Submarine(Hadoop生态系统) (一)Submarine 介绍 (三)Submarine 属于 Hadoop 生态系统 (四)Submarine 官网版...

使用 ESP

针对该分类问题,我们使用了 Kaggle 手势识别数据集 中的一个开源数据集。原始数据集包括 10 个类别,我们只使用了其中 6 个。这些类别更容易识别,且日常生活中更有用,如...

什么是人工智能 ?

您可以使用 ML 训练 AI,使其精确、快速地执行任务。这可以通过自动化员工感到吃力或厌烦的业务部分来提高运营效率。同样,您可以使用 AI 自动化来腾出员工资源,用于更复杂和更具创造性的工作。...

深入理解优化:如何利用 Gemini 3.1 的阶梯计费策略?企业级大规模调用实务完全指南|Duuu笔记

需深入理解Gemini 3.1阶梯计费与调用联动关系,通过识别阶梯区间、请求级Token预估截断、多模型路由调度、响应缓存去重、项目拆分配额绑定五种路径优化成本。 ☞☞☞AI 智能聊天, 问答助手,...

深入理解前端开发:Minimax视频生成黑科技:复杂动作模拟完全指南|Duuu笔记

为精准模拟复杂动作,需采用分帧提示词构建、骨骼关键点引导注入和多阶段动作蒸馏三法:一、将动作拆解为带空间姿态的关键帧序列并加物理约束;二、注入2D/3D关键点坐标锚定关节位置;三、通过粗生成→特征提取...

前端开发实战详解:骡子快跑如何生成会议纪要 骡子快跑语音转文字整理技巧最佳实践|Duuu笔记

使用听脑AI转写、骡子快跑生成纪要、影子跟读校验、自定义术语词典及EcomGPT-CNN情绪风险分析,五步实现会议纪要高效精准产出。 ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。