免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3943 | 回复: 10
打印 上一主题 下一主题

UPDATE 语句求助 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-05-24 10:13 |只看该作者 |倒序浏览
表 t1 (id1, name1, value)  其中name1不得为空
表 t2 (id2, name2)

t1.id1 有部分在 t2.id2 中, 部分不在。

目标:
    更新表 t1。如果 id1 = id2,则将 name1 更新为 t2 中相应的 name2。

请教该如何写这样的 SQL.
谢谢

论坛徽章:
0
2 [报告]
发表于 2003-05-24 10:24 |只看该作者

UPDATE 语句求助

update t1
set t1.name1 =  t2.name2
from t1,t2
where t1.id1 = t2.id2

论坛徽章:
0
3 [报告]
发表于 2003-05-24 10:32 |只看该作者

UPDATE 语句求助

在SQL SERVER 中可以,
在DB2 中不行

论坛徽章:
0
4 [报告]
发表于 2003-05-24 10:34 |只看该作者

UPDATE 语句求助

楼上的说`````
为什么不可以?

论坛徽章:
0
5 [报告]
发表于 2003-05-24 16:28 |只看该作者

UPDATE 语句求助

update t1
set t1.name1 = SELECT t2.name2
from t2
where t1.id1 = t2.id2)

论坛徽章:
0
6 [报告]
发表于 2003-05-24 16:42 |只看该作者

UPDATE 语句求助

update t1 set  name1 =
(select name2 from t2 where id1 = id2)
where exists
(select id2 from t2 where id1=id2);
注意,'where exists'是db2中易忽略的一个地方,少了它则会使匹配
不上的记录的name1为null

论坛徽章:
0
7 [报告]
发表于 2003-05-26 10:00 |只看该作者

UPDATE 语句求助

同意楼上的
也可以把exists操作改为in操作
update ...
set ...
where id1 in (
select id2
from t2)

论坛徽章:
0
8 [报告]
发表于 2003-05-26 10:06 |只看该作者

UPDATE 语句求助

在oracle中也是这种用法
但在sybase、sql server中的用法就不同
我感觉在使用另一个表的一个column来update时,sybase和sql server的语法更简练些;但用另一个表的多个column同时update时,db2和oracle更好些

论坛徽章:
0
9 [报告]
发表于 2003-05-26 11:05 |只看该作者

UPDATE 语句求助

谢谢各位
未经详细论证,只是感觉:sybase和sql server执行UPDATE 的效率好像比DB2要高。
各位以为然否?

论坛徽章:
0
10 [报告]
发表于 2003-05-26 11:15 |只看该作者

UPDATE 语句求助

看你怎么使用
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP