我正在尝试根据另一个表中的信息更新一个表中的单个列,但前提是它们不相同。下面的代码的开头部分(直到大小写)是我迄今为止所做的工作,但在更新之前我似乎无法正确地比较语法。
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兼容的代码都很棒。感谢。
这是比较部分让我循环。不是连接表的直接更新。这就是为什么另一个问题不太正确的原因。
答案 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?