create table Attributes
(
id int,
AttributeName nvarchar(255),
AttributeValue nvarchar(255)
)
insert into Attributes
values
(1, 'BuiltNo', '001')
,(1, 'ManagerName', 'x')
,(1, 'PlantAddress', 'NY')
,(2, 'BuiltNo', '002')
,(2, 'ManagerName', 'y')
,(2, 'PlantAddress', 'NSW')
,(3, 'BuiltNo', '003')
,(3, 'ManagerName', 'z')
,(3, 'PlantAddress', 'QLD')
我想在一个更新查询中更新BuiltNo
、ManagerName
和PlantAddress
,其中id = 1
。显然,我们不能在同一个查询中有2个where
条件,因此需要寻找不同的解决方案。
update Attributes
set AttributeValue = '*001' where AttributeName = 'BuiltNo' ,
set AttributeValue = '*UpdatedValue' where AttributeName = 'ManagerName'
where id = 1
3条答案
按热度按时间gab6jxml1#
您可以在
values
子句上使用join
来指定要套用的条件和新值,如下所示:其结果为:
| 标识符|属性名称|属性值|
| - -|- -|- -|
| 一个|构建编号| *001号|
| 一个|经理Name| * 更新值|
| 一个|工厂地址|纽约州|
| 2个|构建编号|002年|
| 2个|经理Name| Y形|
| 2个|工厂地址|新南威尔士|
| 三个|构建编号|003年|
| 三个|经理Name| Z轴|
| 三个|工厂地址|昆士兰州|
9lowa7mx2#
只是一个想法,传递JSON字符串
示例
更新的表格
nr9pn0ug3#
使用
case when
可以获得一个简单方法。