日期:2014-05-17  浏览次数:20746 次

求SQL语句
问题是这样的:
表A  有字段  aid, atime, aname
表B  有字段  bid, btime, bname
表C  有字段  aid, bid

现在要求:
批量修改atime, aname,要求 修改为 atime = btime(日期部分) + atime(时间部分)
请问这样的语句怎么写?
如果不能用语句,用存储过程也可以?  
------解决方案--------------------
UPDATE A SET 
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('结果字符','格式化类型')
------解决方案--------------------
我现在没环境,没测试过。。你试试。。



merge into a
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 函数