连接两个表,比较和更新的SQL语法是什么?

时间:2015-04-06 21:00:13

标签: sql sql-server join sql-update case

我正在尝试根据另一个表中的信息更新一个表中的单个列,但前提是它们不相同。下面的代码的开头部分(直到大小写)是我迄今为止所做的工作,但在更新之前我似乎无法正确地比较语法。

UPDATE table1
SET table.column1 = table2.column2
 FROM table1
inner join table2 ON
    table1.KEY = table2.KEY
    WHERE column4 = something and DATE between '10/12/14' and '10/15/14'
 CASE 
    WHEN table1.column1 != table2.column2
end;

我正在使用SQL Server 2008r2,但任何与SQL兼容的代码都很棒。感谢。

这是比较部分让我循环。不是连接表的直接更新。这就是为什么另一个问题不太正确的原因。

2 个答案:

答案 0 :(得分:1)

关于相关代码,我认为你需要这样的东西:

UPDATE table1
SET table.column1 = table2.column2
FROM table1
inner join table2 ON table1.KEY = table2.KEY
           and table1.column4 = something 
           and table1.DATE between '10/12/14' and '10/15/14'
           and table1.column1 != table2.column2

答案 1 :(得分:1)

UPDATE t1
SET t1.column1 = t2.column2
 FROM table1 t1
inner join table2 t2 ON t1.[KEY] = t2.[KEY]
WHERE column4 = 'something' 
AND [DATE] >= '20141012'   --<-- Avoid using between operator for dates
AND [DATE] <= '20141015'   --<-- Also use ASNI date format YYYYMMDD (Sargable)
AND t1.column1 <> t2.column2

您避免在日期值之间使用Between运算符的原因是读取此What do BETWEEN and the devil have in common?