如何根据条件更新SQL SERVER DB中的表列

时间:2017-07-28 08:57:58

标签: sql sql-server

我有一张包含以下信息的表格:

ID         Value_N1        Date_N1     Value_N4      Date_N4
1           NULL          2017-05-31    0.236        2017-02-28
2           NULL          2017-05-31    0.589        2017-02-28
3           NULL          2017-08-30    0.898        2017-08-30
4           NULL          2017-11-30    0.789        2017-11-30

我想使用 Value_N4 中的值更新 Value_N1 列,其中 Date_N1 等于 Date_N4

我尝试使用以下查询,但我无处可去:

Update TableName
set Value_N1 = (select Value_N4 from TbleName where Date_N1 = Date_N4)

原因是此查询无效,因为它返回多个值。怎么能实现这一目标?

3 个答案:

答案 0 :(得分:1)

您还可以使用CASE表达式。

<强>查询

update TableName
set Value_N1 = (
    case when Date_N1 = Date_N4
    then Value_N4
    else Value_N1 end
);

答案 1 :(得分:1)

更新TableName设置Value_N1 = Value_N4其中Date_N1 = Date_N4

答案 2 :(得分:0)

您将新值设置为Value_N1的逻辑是正确的,但更新记录的限制应出现在WHERE子句中。

UPDATE TableName
SET Value_N1 = Value_N4
WHERE Date_N1 = Date_N4