【问题标题】:SQL Inner join 2 tables with multiple column conditions and updateSQL 内连接 2 个具有多列条件的表并更新
【发布时间】:2011-03-10 12:46:21
【问题描述】:

我正在使用这个脚本,尝试加入 2 个具有 3 个条件的表并更新 T1:

Update T1 set T1.Inci = T2.Inci 
ON T1.Brands = T2.Brands 
AND T1.Category= T2.Category
AND T1.Date = T2.Date

但我遇到:

Incorrect syntax near the keyword 'ON'.

不知道为什么。

【问题讨论】:

    标签: sql sql-update inner-join


    【解决方案1】:
    UPDATE
        T1
    SET
        T1.Inci = T2.Inci 
    FROM
        T1
    INNER JOIN
        T2
    ON
        T1.Brands = T2.Brands
    AND
        T1.Category= T2.Category
    AND
        T1.Date = T2.Date
    

    【讨论】:

    • ONAND 运算符是否只验证相等性?他们能做到相当于if ((T1.Brands < T2.Brands) && (T1.Category > T2.Category))吗?
    • 如果你使用 >< 这样的东西,你可以减少你可以使用的连接类型。相等运算符非常适用于散列连接,但其他运算符则不然。您可能会无意中陷入您的连接花费 O(n^2) 时间(嵌套循环连接)的情况。
    【解决方案2】:

    你需要做的

    Update table_xpto
    set column_xpto = x.xpto_New
        ,column2 = x.column2New
    from table_xpto xpto
       inner join table_xptoNew xptoNew ON xpto.bla = xptoNew.Bla
    where <clause where>
    

    如果您需要更好的答案,可以给我们更多信息:)

    【讨论】:

      【解决方案3】:
      UPDATE T1,T2 
      INNER JOIN T1 ON  T1.Brands = T2.Brands
      SET 
      T1.Inci = T2.Inci
      WHERE
          T1.Category= T2.Category
      AND
          T1.Date = T2.Date
      

      【讨论】:

      • 读者可以理解为内连接更新。至少语法方式。
      【解决方案4】:

      您应该使用 sql 连接来连接 T1 和 T2 表,以便从两个表中进行分析。学习加入链接:https://www.w3schools.com/sql/sql_join.asp

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-06-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-23
        • 2014-04-05
        • 1970-01-01
        • 2021-11-23
        • 2020-08-23
        相关资源
        最近更新 更多