如何根据一列的值来判断更新哪一列

orcd 2008-10-21 03:02:53
例子:

F1,F2,F3,F4
1
2
3

如果f1的值是1的话就更新列f2,如果是列f1的值是2的话就更新列f3,如果是3的话就更新列f4
...全文
105 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
orcd 2008-10-21
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 liangCK 的回复:]
SQL code更新什么??

--> 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,

[/Quote]

这个是可以的,谢谢各位了
orcd 2008-10-21
  • 打赏
  • 举报
回复
不是把f1这一列的值更新成f2,f3,f4的值,,是更新成其他的值,比如更成成当前的日期
mengxiqu 2008-10-21
  • 打赏
  • 举报
回复
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
rockyvan 2008-10-21
  • 打赏
  • 举报
回复
--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)
mili_mutou 2008-10-21
  • 打赏
  • 举报
回复
先根据相应的条件得到f1的值,然后:

String updatesql = “”;

if(f1 == 1)
{
updatesql = update tablename set f2列的值;
}
if(f1 == 2)
{
updatesql = update tablename set f3列的值;
}
if(f1 == 3)
{
updatesql = update tablename set f4列的值;
}

这样也可以实现不过比较麻烦,期望更好的答案
csdyyr 2008-10-21
  • 打赏
  • 举报
回复


update tb set F2=case when F1=1 then 'xxx' else F2 end,
F3=case when F1=2 then 'xxx' else F3 end,
F4=case when F1=3 then 'xxx' else F4 end,
twgxzjk 2008-10-21
  • 打赏
  • 举报
回复
一条语句的我不会……
UPDATE tb set f2='b' where f1=1
UPDATE tb set f3='c' where f1=2
UPDATE tb set f4='d' where f1=3
Garnett_KG 2008-10-21
  • 打赏
  • 举报
回复


UPDATE tb
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

liangCK 2008-10-21
  • 打赏
  • 举报
回复
更新什么??

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

SELECT * FROM #T;

/*
F1 F2 F3 F4
----------- ----------- ----------- -----------
1 1 NULL NULL
2 NULL 2 NULL
3 NULL NULL 3

(3 行受影响)


*/
pt1314917 2008-10-21
  • 打赏
  • 举报
回复
更新成什么呢?
nalnait 2008-10-21
  • 打赏
  • 举报
回复
游标肯定是可以。不过不推荐,期待高手。。。

34,591

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧