Faj*_*iya 4 sql-server syntax t-sql update
今天我正在阅读一些很久以前做的数据库笔记。我看到了这个查询:
UPDATE Sales.Orders
SET (shipcountry, shipregion, shipcity)=
(SELECT country, region, city
FROM Sales.Customers AS C
WHERE C.custid =Sales.Orders.custid)
WHERE custid IN
(SELECT custid FROM Sales.Customers WHERE country = 'USA');
Run Code Online (Sandbox Code Playgroud)
我对这个语法真的很陌生。但我的注释说它是“有效的 SQL Server 更新语法”。这是真的?SSMS 无法解析它。当我尝试运行它时,我得到了这个:
另外,SQL Server 的UPDATE
文档似乎建议在关键字(
之后不允许使用SET
。无论如何,我只是想确认一下。
语法:
...
SET (shipcountry, shipregion, shipcity) =
( SELECT country, region, city
...
)
...
Run Code Online (Sandbox Code Playgroud)
是有效的SQL语法,但不是有效的 SQL Server 语法。它尚未在任何版本中实现。
它(expression1, expression2, ...)
被称为“行构造函数”,它可以在各种地方使用,例如在WHERE / WHEN / HAVING
条件中、在UPDATE .. SET
(作为您的问题)、在VALUES (...)
语法中(通常在INSERT
语句中使用)。在 SQL Server 中,仅允许在第三种情况 (VALUES) 中使用,该情况在版本 2008 中实现。
其他 DBMS(Postgres、Oracle、DB2)已全部或部分实现了此语法。
归档时间: |
|
查看次数: |
346 次 |
最近记录: |