sql - 一次更新多个值
问题描述
这是我的示例数据
APSDEV clusterData Stylecolor
1 0012 3456
2 0013 4567
和更新查询
UPDATE <table name> SET APS_Dev = 1 FROM <table_name> WHERE d.Style_Color = 0012 AND Cluster_ID = 3456
UPDATE <table name> SET APS_Dev = 2 FROM <table_name> WHERE d.Style_Color = 0013 AND Cluster_ID = 4567
我想要更新查询
UPDATE <table name>
SET APS_Dev = (select
(SELECT Item FROM fn_split(Dataval,':') where idx in (1))
from @test)
FROM <table_name>
WHERE d.Style_Color in (select
(SELECT Item FROM fn_split(Dataval,':') where idx in (3))
from @test)
AND Cluster_ID in (select
(SELECT Item FROM fn_split(Dataval,':')where idx in (2))
from @test)
出现错误:
子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。
我知道错误是由于 APS_Dev "=" 符号造成的。任何人都可以建议如何声明值
解决方案
不确定我是否完全理解您想要实现的目标,但是如果您拆分 DataVal 并将其推送到临时表的列中,您可以根据多条件 where 子句更新主表。
DECLARE @test TABLE (APSDEV INT
,clusterData NVARCHAR(4)
,stylecolor INT
)
DECLARE @toUpdate TABLE (Field1 INT
,Field2 INT
,Field3 INT
,APSDEV INT
,clusterData NVARCHAR(4)
,stylecolor INT
)
INSERT INTO @test
VALUES (1, '0012', 3456),
(2, '0013', 4567)
SELECT *
FROM @test
INSERT INTO @toUpdate
VALUES (1, 1, 1, NULL, '0012', 3456),
(2, 2, 2, NULL, '0013', 4567)
SELECT *
FROM @toUpdate
UPDATE @toUpdate
SET APSDEV = [@test].APSDEV
FROM @toUpdate
JOIN @test ON [@test].clusterData = [@toUpdate].clusterData
AND [@test].stylecolor = [@toUpdate].stylecolor
SELECT *
FROM @toUpdate
如果我错过了您要达到的目标,请告诉我。
推荐阅读
- django - 用于前端的 Django Rest 框架视图和常规 django 视图
- .htaccess - 当名称包含问号 (?) 时重写
- c# - Int64 % Int32 给出 Int64 结果
- c# - 从 ASP.NET 菜单中删除菜单
- c# - 此文件转换代码中的性能问题是什么?
- joi - 使用 joi 验证库删除未知对象属性
- ios - 申请 HomePod
- powerbi - 嗨,我正在使用一些 DAX、度量值和表格来处理 Power BI,以获取最后一条记录,其中包含到期日期范围内的累积日期这里是表格
- java - log4j is not able to print MDC key-value pair in threads
- python - How to evaluate the path to a python script to be executed within Jupyter Notebook