Sql server 在update语句中使用交叉应用
在SQL Server 2005中,是否可以在update语句的from部分使用交叉应用子句?请选择正确的位置,Albert。我做了一些测试,发现这确实是可能的。用法与Sql server 在update语句中使用交叉应用,sql-server,sql-server-2005,sql-update,cross-apply,Sql Server,Sql Server 2005,Sql Update,Cross Apply,在SQL Server 2005中,是否可以在update语句的from部分使用交叉应用子句?请选择正确的位置,Albert。我做了一些测试,发现这确实是可能的。用法与SELECT语句中的用法相同。例如: UPDATE some_table SET some_row = A.another_row, some_row2 = A.another_row/2 FROM some_table st CROSS APPLY (SELECT TOP 1 another_row FROM
SELECT
语句中的用法相同。例如:
UPDATE some_table
SET some_row = A.another_row,
some_row2 = A.another_row/2
FROM some_table st
CROSS APPLY
(SELECT TOP 1 another_row FROM another_table at WHERE at.shared_id=st.shared_id) AS A
WHERE ...
上面的查询给了我错误“附近的语法不正确”)。“我花了一点时间才弄明白原因,所以我只想在这里添加解决方案,以防有人遇到它。在cross-apply-select语句之后添加一个“as”似乎可以解决这个问题。在SQL Server中,我不得不将“UPDATE some_table”替换为“UPDATE st”。使用cross-apply的一个好处是可以使用“top”和“sort”;这使您能够按照所需的特定顺序执行更新。