Access SQL SELECT查询:是否需要在WHERE子句中使用表别名?

时间:2018-08-15 15:19:31

标签: sql ms-access

当前环境:拆分访问数据库,本地访问前端,共享网络驱动器上的访问后端

我正在写一个愚蠢的长SELECT语句。使用表别名使我的代码更具可读性。

我被教导要在WHERE语句中写出完整的表名,因为它们是在FROM语句之前执行的。但是,当我这样做时-当我写出完整的表名时,Access找不到引用的表/字段。奇怪的是,我尝试在WHERE语句中使用别名,并且有效!!

Access执行语句的方式与我所教的不同吗?还是我在不知不觉中导致它这样做?

我的SQL代码的缩小版本不起作用:

SELECT [C].Multi_File_Case_ID,
[C].Case_Report_Number,
[C].Include_In_Casebook,
[C].Case_Status,
FROM Case_Tbl AS [C] 
WHERE [Case_Tbl].Include_In_Casebook = True;

编辑:一个单词和一个大写字母;)

1 个答案:

答案 0 :(得分:3)

一旦在FROM中将表引用定义为别名,就需要在查询中的所有地方使用该别名。别名不仅仅是昵称;这是查询范围的名称更改。

我建议您放下方括号。查询更易于阅读和编写为:

SELECT c.Multi_File_Case_ID, c.Case_Report_Number, c.Include_In_Casebook, c.Case_Status
FROM Case_Tbl AS c
WHERE c.Include_In_Casebook = True;

当您不定义表别名时,表名本身就是别名。