更新什么??--> liangCK小梁 于2008-10-21 --> 生成测试数据: #T IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T CREATE TABLE #T (F1 INT,F2 INT,F3 INT,F4 INT) INSERT INTO #T SELECT 1,null,null,null UNION ALL SELECT 2,null,null,null UNION ALL SELECT 3,null,null,null--SQL查询如下:UPDATE #T SET F2=CASE WHEN F1=1 THEN F1 END, F3=CASE WHEN F1=2 THEN F1 END, F4=CASE WHEN F1=3 THEN F1 END
--CASE語句即可,符合條件的更新,不符合條件的等於原值。 UPDATE TB SET F2=(CASE WHEN F1=1 THEN 'XX' ELSE F2 END), F3=(CASE WHEN F1=2 THEN 'YY' ELSE F3 END), F4=(CASE WHEN F1=3 THEN 'ZZ' ELSE F4 END)
UPDATE #T SET f2=CASE F1 WHEN 1 THEN 11 ELSE F2 END, f3=CASE F1 WHEN 2 THEN 22 ELSE F3 END, f4=CASE F1 WHEN 3 THEN 44 ELSE F4 END select * from #T
--> 生成测试数据: #T
IF OBJECT_ID('tempdb.dbo.#T') IS NOT NULL DROP TABLE #T
CREATE TABLE #T (F1 INT,F2 INT,F3 INT,F4 INT)
INSERT INTO #T
SELECT 1,null,null,null UNION ALL
SELECT 2,null,null,null UNION ALL
SELECT 3,null,null,null--SQL查询如下:UPDATE #T
SET F2=CASE WHEN F1=1 THEN F1 END,
F3=CASE WHEN F1=2 THEN F1 END,
F4=CASE WHEN F1=3 THEN F1 END
SELECT * FROM #T;/*
F1 F2 F3 F4
----------- ----------- ----------- -----------
1 1 NULL NULL
2 NULL 2 NULL
3 NULL NULL 3(3 行受影响)
*/
SET F2=CASE WHEN F1=1 THEN 待更新的值 ELSE F2 END,
F3=CASE WHEN F1=2 THEN 待更新的值 ELSE F3 END,
F4=CASE WHEN F1=3 THEN 待更新的值 ELSE F4 END
UPDATE tb set f2='b' where f1=1
UPDATE tb set f3='c' where f1=2
UPDATE tb set f4='d' where f1=3
F3=case when F1=2 then 'xxx' else F3 end,
F4=case when F1=3 then 'xxx' else F4 end,
{
updatesql = update tablename set f2列的值;
}
if(f1 == 2)
{
updatesql = update tablename set f3列的值;
}
if(f1 == 3)
{
updatesql = update tablename set f4列的值;
}这样也可以实现不过比较麻烦,期望更好的答案
UPDATE TB
SET F2=(CASE WHEN F1=1 THEN 'XX' ELSE F2 END),
F3=(CASE WHEN F1=2 THEN 'YY' ELSE F3 END),
F4=(CASE WHEN F1=3 THEN 'ZZ' ELSE F4 END)
SET f2=CASE F1 WHEN 1 THEN 11 ELSE F2 END,
f3=CASE F1 WHEN 2 THEN 22 ELSE F3 END,
f4=CASE F1 WHEN 3 THEN 44 ELSE F4 END
select * from #T