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

求教多表关联批量更新
现有 A,B,C三个表,现在要做的就是把 B表中start_time字段,减去C表中的start_time字段,然后填入到A表的relative_starttime字段中去,其中B表通过C.ID关联,即 b.c_id = c.id,A表与B表能过B的ID关联(A.B_ID = B.ID),
其中B表的start_time要在系统时间的一个小时之内,请问各位大神,这个SQL该怎么写?
------最佳解决方案--------------------

MERGE INTO A 
  USING (SELECT B.ID,B.start_time-C.start_time tmp_time FROM B,C WHERE B.c_id = C.id ) TMPB
  ON (A.ID = TMPB.ID)
WHEN MATCHED THEN 
  UPDATE
    SET A.relative_starttime = TMPB.tmp_time

------其他解决方案--------------------
UPDATE A 
SET A.relative_starttime=(SELECT B.start_time-C.start_time FROM B,C WHERE b.c_id = c.id) 
WHERE A.ID IN (SELECT B.ID FROM B);
------其他解决方案--------------------
好像不行啊。。。
------其他解决方案--------------------
引用:
SQL code


MERGE INTO A 
  USING (SELECT B.ID,B.start_time-C.start_time tmp_time FROM B,C WHERE B.c_id = C.id ) TMPB
  ON (A.ID = TMPB.ID)
WHEN MATCHED THEN 
  UPDATE
    SET A.relative_startt……


貌似是行的