sql - 需要更新一个表
问题描述
我需要更新旧值属性中的表 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 的值)。
解决方案
您可以忽略该问题并使用以下方法解决它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;
推荐阅读
- java - net.sf.jasperreports.engine.JRException:java.net.MalformedURLException:无法调用“String.length()”,因为“spec”为空
- kotlin - Kotlin 反射获取参数作为字符串
- .net - InitializeComponent() 不存在 - 多目标项目 (4.6.1 & 5)
- teradata - 通过 .NET 连接器查询的错误结果,但直接在 Teradata Studio 中更正了结果
- sql - 每个点返回的行数 PostGIS
- javascript - Nodemailer连接错误仅在服务器上
- r - ggplot2如何仅对数据的某些行着色
- java - 将jOOQ表达式分配给局部变量时如何防止Eclipse添加@NotNull注释
- python - 在 python 套接字服务器上从客户端接收文件
- tarantool - 如何在 tarantool 中将乙烯基转换为 memtx?