【问题标题】:Using cross apply in update statement在更新语句中使用交叉应用
【发布时间】:2011-11-21 12:14:33
【问题描述】:

是否可以在 SQL Server 2005 的更新语句的 from 部分中使用交叉应用子句?

【问题讨论】:

    标签: sql-server sql-server-2005 sql-update cross-apply


    【解决方案1】:

    你说对了,阿尔伯特。我做了一些测试,发现确实有可能。用法与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”
    • 使用交叉应用的一个好处是可以使用“top”和“sort”;这使您能够以所需的特定顺序执行更新。
    • 我没有发现需要别名。 UPDATE some_table Set ... FROM some_table CROSS APPLY WHERE ...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2015-05-09
    • 1970-01-01
    • 2013-11-18
    • 1970-01-01
    • 1970-01-01
    • 2014-01-24
    相关资源
    最近更新 更多