【问题标题】:MS Access SQL DELETE - why would someone specify column names?MS Access SQL DELETE - 为什么有人会指定列名?
【发布时间】:2010-01-21 22:20:09
【问题描述】:

我必须支持其他人编写的 Access .mdb 文件。此 .mdb 中的按钮功能之一调用删除外部 MSSQL 数据库中的一些数据。一切都非常简单,但这种语法不是我以前见过的:

DELETE 
  tblEquipmentConnections.SourceEquip, 
  tblEquipmentConnections.EquipmentConnectionID
FROM tblEquipmentConnections
WHERE 
    tblEquipmentConnections.SourceEquip = [Forms]![frmEquipment]![EquipmentID];

这和这个有什么不同吗?

DELETE 
FROM tblEquipmentConnections
WHERE 
    tblEquipmentConnections.SourceEquip = [Forms]![frmEquipment]![EquipmentID];

我找不到指定特定列有什么作用的情况 - 但我没有在 Access 上花费太多时间,所以我不确定 SQL 语法有多么不同...

谢谢!

【问题讨论】:

  • 指定列名对我来说也没有任何意义。有兴趣看看是否有任何可以解释的东西。

标签: sql ms-access


【解决方案1】:

指定列名没有区别。这只是一个访问的东西。

它们可能存在的原因是因为 Access 曾经以这种方式生成 DELETE 语句(不确定它是否仍然如此)。

不带列名的第二种形式显然更可取。

【讨论】:

  • 谢谢 Mitch,我料到会是这样,甚至没有想到它可能是由 Access 生成的。谢谢!
  • 不是由 Access 生成,而是由 QBE 生成。如果您在 QBE 中使用 SELECT 语句开始,以确保您选择了正确的记录,然后将其转换为删除,它将保留原始 SELECT 语句中的字段。我认为这只是草率,因为我总是会转换为更标准的 DELETE * (我不喜欢 DELETE FROM 语法,即使它受支持,因为它只是感觉不对)。
【解决方案2】:

我认为查询已直接内置到 Access 查询编辑器中。

通常我们从构建一个选择查询开始。然后我们将查询类型从“选择查询”更改为“删除查询”。然后我们通过选择“SQL 模式”来显示查询源,我们在其中复制/粘贴这样的 sql 语句:

 DELETE qc_Boxes.idBox, qc_Boxes.idScreen, qc_Boxes.title
 FROM qc_Boxes;

【讨论】:

    【解决方案3】:

    这绝对是多余的。 DELETE 和 FROM 之间的位置仅在基于多表条件执行删除时使用,但即使在这种情况下,它也包含表名而不是字段名。它也可以包含 * 这也是多余的。例如,在 MySQL 中,它的语法不正确。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-01-13
      • 1970-01-01
      • 2015-06-05
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 2021-12-02
      相关资源
      最近更新 更多