update t3 set t3 = (select f1 from t1, t2 where t1.f2 = t2.f2);
解决方案 »
- 经典Oracle维护问题搜集
- 该怎么设计我的表中的字段啊?
- 这样的SQL语句要怎么写?
- 在p4机子装oracle816时遇到问题,急!通信通道的文件结束(高分求救)
- 那们一大哥能告诉我一下那里有ORACLE函数据介绍?
- 关于两个表的查询
- 帮我看一下一个SQL的问题:
- ORACLE能不能象MS SQL Server2000一样? 直接生成XML?
- ado.net怎样连接oracle数据库??
- 触发器出错,原表事务会回滚吗?
- select * from tb where bm in (2,5,6......) ,怎么解决括号内字符串超长问题??
- 是不是Oracle和eclipse是互斥的?请大家关注!
SET f3=(select b.f3 from t1 a,t2 b where a.f2=b.f2 and a.f1=某个具体值)
WHERE f1 =要更新的货物编号
where t.f1=t3.f1中t.f1是无效的列名
t1
货物编号goodsno 仓库地址addrt2
仓库编号wno 仓库地址addrt3
货物编号goodsno 仓库编号wno1、t1和t2的数据都是全的,
2、要求根据t1中仓库的地址,从t2中找到相应的仓库编号,
3、再来更新t3中仓库编号的值,而货物编号是要求对应的!!!
===========================
SQL> select * from t1; GOODSNO ADDR
---------- --------
1 杭州
1 广州SQL> select * from t2; WNO ADDR
---------- --------
10 杭州
11 北京
12 广州
SQL> select * from t3; GOODSNO WNO
---------- ----------
1 我的分析
2、要求根据t1中仓库的地址,从t2中找到相应的仓库编号,
=========================
这一步可以实现,如下
SQL> select t1.goodsno,t2.wno from t1,t2 where t1.addr=t2.addr; GOODSNO WNO
---------- ----------
1 10
1 12这时候货物编号都为1,但是有两个仓库编号,我怎么去update t3?
========================================================
3、再来更新t3中仓库编号的值,而货物编号是要求对应的!!!
========================================================
是不是根据上面的查询结果去更新t3,
就是比如update t3 set wno=10 where goodsno=1; ?
我把楼主的意思分步理解了一下,还是不明。。
t1
货物编号goodsno 仓库地址addrt2
仓库编号wno 仓库地址addrt3
货物编号goodsno 仓库编号wno1、t1和t2的数据都是全的,
2、要求根据t1中仓库的地址,从t2中找到相应的仓库编号,
3、再来更新t3中仓库编号的值,而货物编号是要求对应的!!!
===========================
SQL> select * from t1; GOODSNO ADDR
---------- --------
1 杭州
2 广州SQL> select * from t2; WNO ADDR
---------- --------
10 杭州
11 北京
12 广州
13 广州
SQL> select * from t3; GOODSNO WNO
---------- ----------
1 我的分析
2、要求根据t1中仓库的地址,从t2中找到相应的仓库编号,
=========================
这一步可以实现,如下
SQL> select t1.goodsno,t2.wno from t1,t2 where t1.addr=t2.addr; GOODSNO WNO
---------- ----------
1 10
2 12
2 13这时候货物编号都为2,但是有两个仓库编号,我怎么去update t3?
========================================================
3、再来更新t3中仓库编号的值,而货物编号是要求对应的!!!
========================================================
是不是根据上面的查询结果去更新t3,
就是比如update t3 set wno=12 where goodsno=2; ?
update t3 set t3.f3 = (select t2.f3 from t1, t2 where t1.f2=t2.f2 and t3.f1 = t1.f1)
where...
不明白楼主到底要做什么???
SQL> select t1.goodsno,t2.wno from t1,t2 where t1.addr=t2.addr; GOODSNO WNO
---------- ----------
1 10
2 12
2 13
是可以找到这些。我想实现的功能就是根据t3中已有的GOODSNO来更新其对应的WHO,例如
SQL> select * from t3; GOODSNO WNO
---------- ----------
1
应该更新为
GOODSNO WNO
---------- ----------
1 10 另忘了说明的是,t2中的WNO-ADDR是唯一对应的,即不存在一个地址对应多个WNO :)
======================================================================================
回复人: iouczp() ( ) 信誉:100 2004-10-24 21:33:00 得分: 0
应该是这样吧:
update t3 set t3.f3 = (select t2.f3 from t1, t2 where t1.f2=t2.f2 and t3.f1 = t1.f1)
======================================================================================
(select t1.goodsno,t2.wno from t1,t2 where t1.addr=t2.addr) b
where a.goodsno=b.goodsno)