【发布时间】:2019-01-22 12:04:20
【问题描述】:
当前环境:拆分访问数据库、本地访问前端、共享网络驱动器上的访问后端
我正在编写一个愚蠢的长 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;
编辑:一个词和一个大写;)
【问题讨论】:
-
其实有点道理。
-
[Case_Tbl].Include_In_Casebook = True;应该是[C].Include_In_Casebook = True; -
我很不一样,一旦你为表分配了别名,你就必须使用别名
-
在大多数引擎的 SQL 操作顺序中:
FROM(带有任何JOIN)通常是第一个处理的子句。WHERE将紧随其后。 -
@Parfait 澄清你是说 FROM+JOIN = 先执行吗?因此 FROM w/o 没有首先执行 JOIN 还是我只是想象在 WHERE 子句规则中不要使用别名?