【发布时间】:2012-04-02 04:35:23
【问题描述】:
SQL 中是否不允许更新字段的表名前缀?喜欢:
UPDATE tablename
SET tablename.mycolums = true
WHERE ...
什么是SQL标准?
【问题讨论】:
-
你遇到了什么错误
-
我认为他在寻找跨学科的解释。
标签: mysql sql postgresql tsql
SQL 中是否不允许更新字段的表名前缀?喜欢:
UPDATE tablename
SET tablename.mycolums = true
WHERE ...
什么是SQL标准?
【问题讨论】:
标签: mysql sql postgresql tsql
以上查询在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
【讨论】:
在 SET 部分的列前面加上 PostgreSQL 中的表别名是无效的,在 documentation 中提到:
列
表中列的名称。如果需要,列名可以用子字段名或数组下标限定。不要在目标列的规范中包含表的名称——例如,UPDATE tab SET tab.col = 1 是无效的。
还提到了这种行为符合 SQL 标准。
【讨论】:
是的,当然在 Sql-Server 中是允许的。如果您编写如下查询,则可以正常工作。
UPDATE KKDb SET KKDb.StdName = 'Sai' WHERE (KKDb.StdNo = 1)
【讨论】: