oracle中有两个表a表:
IDNUM SNAME
1 wuxi
2 shanghai
3 zhagnjiakang
4 changzhoub表:
IDNUM CLIENTNAME REMARKED
1 hhh
2 hhh
3 update b set clientname = (select sname from a where a.idnum= b.idnum)
where reed = 'hhh';(select sname from a where a.idnum= b.idnum)这句中的b是带where reed = 'hhh' 之后的表呢,还是就是b表本身?set clientname后面不是只能带一个值吗?比如 clientname = (aaaa)是对的,clientname = (aaaa,bbbb)肯定错呀,能不能讲下 上面update的执行顺序?
Oracleselectupdate
IDNUM SNAME
1 wuxi
2 shanghai
3 zhagnjiakang
4 changzhoub表:
IDNUM CLIENTNAME REMARKED
1 hhh
2 hhh
3 update b set clientname = (select sname from a where a.idnum= b.idnum)
where reed = 'hhh';(select sname from a where a.idnum= b.idnum)这句中的b是带where reed = 'hhh' 之后的表呢,还是就是b表本身?set clientname后面不是只能带一个值吗?比如 clientname = (aaaa)是对的,clientname = (aaaa,bbbb)肯定错呀,能不能讲下 上面update的执行顺序?
Oracleselectupdate
解决方案 »
- 求一条简单的SQL,各位牛人在哪里?
- Connect By ..不指定Start With,结果这样怎么办??
- 关于oracle用透明网关连接到sqlserver的问题
- 日志文件损坏,system表空间存在一致性问题,怎么办啊!!!
- 请高手帮忙,关于数据库迁移的问题,从sqrserver到oracle
- 我希望向DBA方向转移,有没有好的DBA书籍或专业网站给推荐一下啊?
- sql 关联查询
- WindowsXP SP2下为什么安装不了oracle9i ?急!!!
- 一个关于oracle enterprise manager consol的问题
- 谁有 pl/sql developer 5.0 的注册号??(可用就加分)
- 本人新手。。求大神看看关于过滤分隔符提取字符串的问题,我用数组实现错误好多
- 关于oracle和access数据交换的问题
放在里面,则是更新内容的条件。
update b set clientname = (select sname from a where a.idnum= 2) where reed = 'hhh';
update b set clientname = (select sname from a where a.idnum= 3) where reed = 'hhh';1,2,3是什么?b每行的b.idnum。所以update b set clientname = (select sname from a where a.idnum= b.idnum) where reed = 'hhh';
实践告诉你 ,语句肯定没有错,下面就是结果。
IDNUM CLIENTNAME REMARKED
1 wuxi hhh
2 shanghai hhh
3
是不是可以这样理解,先过滤掉b表中reed值不是'hhh'的记录,相当于得到一张新的表,就是需要更新的行,然后从第一条遍历直到最后一条记录。
因为a表中第一条的idnum的值是1,所以 根据条件 把b表中的第一条更新为wuxi;
因为a表中第二条的idnum的值是2,所以 根据条件 把b表中的第二条更新为shanghai;
这样的话,一下更新了两行,就是把'hhh'的两行都更新为同一个值了。
是不是可以这样理解,先过滤掉b表中reed值不是'hhh'的记录,相当于得到一张新的表,就是需要更新的行,然后从第一条遍历直到最后一条记录。
因为a表中第一条的idnum的值是1,所以 根据条件 把b表中的第一条更新为wuxi;
因为a表中第二条的idnum的值是2,所以 根据条件 把b表中的第二条更新为shanghai;是这个意思