_十二 2024-02-06 13:40 采纳率: 100%
浏览 3
已结题

SQL Delete语句使用两个FROM

Delete From CEF_RACK_BOX_ORDER From CEF_RACK_BOX_ORDER D [Where 语句]

在SQLServer 中这种写法并不会报错
不明白的是,为什么使用两个FROM,且是同一张表?
有dl解释一下吗?

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-02-06 13:41
    关注

    引自免费微信小程序:皆我百晓生

    在标准的SQL语法中,DELETE语句并不需要也不支持使用两个FROM关键字来指定同一张表。然而,在SQL Server中,尽管不推荐这种写法,但确实可以接受额外的表引用,这更多是由于SQL Server对非标准语法的某种程度上的容忍,并不会报错。

    关于SQL Server中的“双FROM”现象

    当您写出如下形式的DELETE语句时:

    DELETE From CEF_RACK_BOX_ORDER 
    From CEF_RACK_BOX_ORDER D 
    [Where 条件];
    

    这里的第二个From及其后的表名实际上是在为要删除的数据创建一个别名(这里别名为D)。虽然它看起来冗余,但在某些情况下,可能是因为开发者想通过别名来明确指定表并且在WHERE子句中使用这个别名以提高可读性或方便编写复杂的查询条件。

    标准SQL DELETE语句格式:

    在标准SQL中,通常会这样编写DELETE语句:

    DELETE FROM table_name
    [WHERE condition];
    

    例如,若要从CEF_RACK_BOX_ORDER表中删除满足特定条件的记录,标准且清晰的做法应该是:

    DELETE D
    FROM CEF_RACK_BOX_ORDER AS D
    WHERE [your_condition];
    

    在这里,D作为CEF_RACK_BOX_ORDER的别名被用来在WHERE子句中引用列。尽管SQL Server允许上述非标准的写法,但为了保持代码的可移植性和遵循最佳实践,建议始终采用标准的SQL语法书写DELETE语句。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 2月6日
  • 已采纳回答 2月6日
  • 创建了问题 2月6日