【问题标题】:Table name prefix for columns in UPDATE queryUPDATE 查询中列的表名前缀
【发布时间】:2012-04-02 04:35:23
【问题描述】:

SQL 中是否不允许更新字段的表名前缀?喜欢:

UPDATE tablename 
   SET tablename.mycolums = true 
 WHERE ...

什么是SQL标准?

【问题讨论】:

  • 你遇到了什么错误
  • 我认为他在寻找跨学科的解释。

标签: mysql sql postgresql tsql


【解决方案1】:

以上查询在SQL SERVER环境下完美运行。

UPDATE 语句的SQL 标准具有以下形式:

UPDATE table_name SET column_name = value [, column_name = value ...] [WHERE condition]

但是有些数据库通过在UPDATE语句中使用FROM来使用非标准形式:

UPDATE alias_name 
alias_name.mycolums=true
FROM tablename alias_name  

【讨论】:

    【解决方案2】:

    在 SET 部分的列前面加上 PostgreSQL 中的表别名是无效的,在 documentation 中提到:

    表中列的名称。如果需要,列名可以用子字段名或数组下标限定。不要在目标列的规范中包含表的名称——例如,UPDATE tab SET tab.col = 1 是无效的。

    还提到了这种行为符合 SQL 标准。

    【讨论】:

      【解决方案3】:

      是的,当然在 Sql-Server 中是允许的。如果您编写如下查询,则可以正常工作。

      UPDATE KKDb SET KKDb.StdName = 'Sai' WHERE (KKDb.StdNo = 1)
      

      【讨论】:

        猜你喜欢
        • 2014-12-11
        • 2015-12-05
        • 2019-05-26
        • 2011-01-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多