T-SQL需要帮助才能完成查询

时间:2013-12-23 20:33:51

标签: sql-server sql-server-2008 tsql

我正在尝试修复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

谢谢

3 个答案:

答案 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