首页 > 解决方案 > 需要更新一个表

问题描述

我需要更新旧值属性中的表 1。我们可以在集合中使用选择吗?我认为这样做没有任何问题......

代码:

declare @oldvalue int 
set @oldvalue=1 
UPDATE [table_1]            
SET OldValue=(SELECT Description 
             FROM table2 
             WHERE OldValue=@oldvalue)          
WHERE ChangedField='UAC' and OldValue=@OldValue and  convert(date, LastChangeDate) ='2018-05-05' and id=875304

它抛出这个错误:

消息 512,级别 16,状态 1,第 4 行子查询返回超过 1 个值。当子查询跟在 =, !=, <, <= ,

, >= 或当子查询用作表达式时

为什么??该部分(SELECT Description FROM table2 WHERE OldValue=@oldvalue)
仅提供一条记录(我尝试了从 1 到 10 的值)。

标签: sqlsql-server

解决方案


您可以忽略该问题并使用以下方法解决它top

UPDATE [table_1]            
    SET OldValue = (SELECT TOP (1) t2.Description 
                    FROM table2 t2
                    WHERE t2.OldValue = @oldvalue
                   )          
    WHERE ChangedField = 'UAC' and OldValue = @OldValue and
          convert(date, LastChangeDate) = '2018-05-05' and id = 875304;

您可以通过查找重复项来诊断问题:

select t2.OldValue
from table2 t2
group by t2.OldValue
having count(*) > 1;

推荐阅读