问题是这样的:
表A 有字段 aid, atime, aname
表B 有字段 bid, btime, bname
表C 有字段 aid, bid现在要求:
批量修改atime, aname,要求 修改为 atime = btime(日期部分) + atime(时间部分)
请问这样的语句怎么写?
如果不能用语句,用存储过程也可以?
表A 有字段 aid, atime, aname
表B 有字段 bid, btime, bname
表C 有字段 aid, bid现在要求:
批量修改atime, aname,要求 修改为 atime = btime(日期部分) + atime(时间部分)
请问这样的语句怎么写?
如果不能用语句,用存储过程也可以?
解决方案 »
- Oracle怎么建自己的数据库。。
- 求助,ORACLE查询结果排序问题,难!(急!!!)
- 当表修改记录时,在外部程序触发一事件,怎么处理?请指教
- oracle中查看表里各字段的备注信息
- 请教ora-03114,结贴加分
- 数据类型int integer
- 不等于用什么?
- 请问oracle中能使用case...when...then...end吗?
- 如何登陆到oracle manager server中
- imp导入提示IMP-00058: 遇到 ORACLE 错误 12154 ORA-12154: TNS: 无法解析指定的连接标识符 IMP-00000: 未成功
- 求助 ORA-12154: TNS:could not resolve the connect identifier specified
- 存储过程报:xmldom.DOMDocument must be declared 错误
ATIME=(SELECT A.ATIME|| ' ' || B.BTIME FROM A , B , C WHERE A.AID=C.AID AND B.BID=C.BID)
, ANAME=(SELECT A.ANAME|| ' ' || B.BNAME FROM A , B , C WHERE A.AID=C.AID AND B.BID=C.BID)
WHERE AID IN (SELECT A.AID FROM A,B,C WHERE A.AID=C.AID AND B.BID=C.BID)
这种应该可以。 我以前用过在update后面加子查询的。mysql不行,oracle好像可以。 你试一下。当然,这个我都默认为字符串了。如果ATIME和BTIME都是日期类型的话,你需要先将 日期转字符to_char(ATIME),然后截取前面一部分, BTIME同样处理,截取后面一部分, 然后在字符拼接起来,然后再to_date('结果字符','格式化类型')
using (
select * from b ,c where b.bid = c.bid
) d
on (a.aid = d.aid )
when matched then
update set a.atime = trunc(b.btime(日期部分),'yyyy-mm-dd') || trunc(a.atime(时间部分),'hh:mi:ss')你自己把日期截取下。。用trunc 函数
这个可以的,但是现在有个更复杂的:
表A 有字段 aid, atime, aname
表B 有字段 bid, btime, bname
表C 有记录 cid, ctime1
表C 有记录 cid, ctime2
表D 有字段 aid, bid
发现用mutoujuelian 方法 总是说 单行子查询返回多个值;
就是说要一次修改 表C 的 cid 为某个值时 多条记录有问题