我正在尝试修复T-Sql查询
示例,我正在尝试重置特定字符的统计信息
CharA的力量= 500,智力= 100 CharB的强度= 100,智力= 500
如果强度为500
,我正在尝试进行查询以将智力更改为500我使用此查询
UPDATE Table
SET Strength = '500', Intellect = '100'
WHERE CharName = CharA
AND Intellect = '500'
UPDATE Table
SET Intellect = '500', Strength = '100'
WHERE CharName = CharA
AND Strength = '500'
此查询中的问题是,它只会执行设置intellect = 500的最后一个查询,但我希望用户能够根据char切换智力和力量,所以如果char有智力500,使用查询将设置Strength = 500,如果Strength = 500,则在一个查询中设置intellect = 500
谢谢
答案 0 :(得分:0)
我希望你的力量和智力领域不是varchar / char类型,如果它们是整数,它们应该是整数。
UPDATE Table Set
Intellect = (CASE
WHEN Intellect = 500 THEN 100
WHEN Intellect = 100 Then 500 END),
Strength = (CASE
WHEN Strength = 500 THEN 100
WHEN Strength = 100 Then 500 END)
WHERE CharName = 'CharA'
答案 1 :(得分:0)
应该非常直接:
UPDATE CHARACTERS
SET STRENGTH = CASE WHEN INTELLECT = 500 AND STRENGTH <> 500 THEN 500 ELSE STRENGTH END,
INTELLECT = CASE WHEN STRENGTH = 500 AND INTELLECT <> 500 THEN 500 ELSE INTELLECT END
WHERE Character = 'CHARA'
在更好地理解了这个问题后,我修改了查询。
答案 2 :(得分:0)
另一种方式:
UPDATE <yourtable>
SET intellect = CASE
WHEN strength = 500 THEN 500
ELSE <some other value>
SET strength = CASE
WHEN intellect = 500 THEN 500
ELSE <some other value>
END