SQL 内连接 2 个具有多列条件的表并更新
Posted
技术标签:
【中文标题】SQL 内连接 2 个具有多列条件的表并更新【英文标题】:SQL Inner join 2 tables with multiple column conditions and update 【发布时间】: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'
.
不知道为什么。
【问题讨论】:
【参考方案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
【讨论】:
ON
和 AND
运算符是否只验证相等性?他们能做到相当于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
【讨论】:
以上是关于SQL 内连接 2 个具有多列条件的表并更新的主要内容,如果未能解决你的问题,请参考以下文章
当您连接 2 个具有相同架构的表并检查除一个以外的所有字段是不是相等时,如何避免在 SQL 中编写冗长的 where 子句?