2009-11-04 39 views

回答

3

只是一個例子:

IF @a <= 0 
BEGIN 
    UPDATE table SET counter = @a, name = 'Minati' 
END 
ELSE 
BEGIN 
    UPDATE table SET name = 'Minati' 
END 
9

可以使用case來控制是否您分配一個新的值或保留舊值。

update <sometable> 
set field = case when <condition> then <newvalue> else field end 
where <condition> 

例子:

update questions 
set reply = case when @input is not null then @input else reply end 
where answer = 42 
+1

ISNULL(@input,field)? – devio 2009-11-04 07:20:37

+0

@devio:是的,對於條件檢查爲null的特定情況,可以使用isnull函數代替案例,但我想顯示案例,因爲它可以用於任何類型的條件。 :) – Guffa 2009-11-04 07:28:10

+0

@Guffa:+1這也是我的首選解決方案。也許你應該編輯你的答案並將「@input不爲空」更改爲「<某些條件適用>」,以明確如果某些條件適用,將獨立於@input來進行字段更新。 – 2009-11-04 08:12:09

3

可能是你可以在更新命令建立的條件和輕鬆運行與diferent條件的多個更新。它可能不是最優雅的方式,但它是有缺陷的。這取決於你的需求。

UPDATE table SET field=value WHERE <<condition>> 
UPDATE table SET field=value2 WHERE <<condition2>> 
6

使用案例聲明UPDATE子句

SQL語句#6

UPDATE titles 
     SET price = 
       CASE 
        WHEN (price < 5.0 AND ytd_sales > 999.99) 
            THEN price * 1.25 
        WHEN (price < 5.0 AND ytd_sales < 1000.00) 
            THEN price * 1.15 
        WHEN (price > 4.99 AND ytd_sales > 999.99) 
            THEN price * 1.2 
        ELSE price 
       END 

SQL SERVER UPDATE

兩者你也可以用if..else語句去

如果您曾經參加過SQL SERVER 2008,那麼您可以利用MERGE語句

相關問題