【问题标题】:Access SQL SELECT Query: Required to use the table alias in WHERE clause?Access SQL SELECT 查询:需要在 WHERE 子句中使用表别名?
【发布时间】: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 子句规则中不要使用别名?

标签: sql ms-access


【解决方案1】:

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;

当您不定义表别名时,表名本身用作别名。

【讨论】:

  • 更多方括号! SELECT c.[field] FROM [Case_Tbl] c(因为你可以主动让你的昵称不是关键字)
  • 方括号是我不知道我能不能打破的习惯哈哈。当我接手当前的 ms-access 项目时 - 前一个人命名了所有带有空格的表。
  • @VeryBasicApplication 。 . .如果以前的人抽烟,你现在不应该开始。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-16
  • 2017-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-13
相关资源
最近更新 更多