将数据从2个表复制到1个表

时间:2013-08-29 11:03:20

标签: mysql sql

我有2张桌子。

  1. VoiceZone1:它包含4列(Uname,TID,Res_Msg,Req_Time)
  2. VoiceZone2:它还包含(Uname,TID,Res_Msg,Req_Time)
  3. 拥有另一张表VoiceZoneLog

    要将VoiceZone1的所有列和VoiceZoneLog以及Res_Msg Req_Time的两列VoiceZone2复制到VoiceZoneLog表。

    请使用sql / mysql指导我。

    查看我的查询:

    INSERT INTO VoiceZoneLog 
       SELECT A.REQ_TIME,
              B.RES_TIME,
              A.USER_NAME,
              A.TID,
              A.REQ_MSG,
              B.RES_MSG 
         FROM VoiceZone1 A, 
              VoiceZone2 B 
        WHERE A.TID=B.TID AND 
              A.REQ_MSG='CALL_LOGS_HISTORY 14'
    

    所以它正确执行但我的任务是想要优化它。 我想要任何其他方式。所以请指导我。

1 个答案:

答案 0 :(得分:3)

您的查询没问题,但使用标准联接语法并列出insert的列会更好:

INSERT INTO VOICEZONE_LOGS (REQ_TIME, RES_TIME, USER_NAME, TID, REQ_MSG_A, REQ_MSG_B)
  SELECT A.REQ_TIME, B.RES_TIME, A.USER_NAME, A.TID, A.REQ_MSG, B.RES_MSG 
  FROM VZ_LOGS_REQ A join
       VZ_LOGS_RESP B
       ON A.TID = B.TID
  WHERE A.REQ_MSG='CALL_LOGS_HISTORY 14';

(插入时列名可能有误,我猜对了。)

您可以通过索引来提高性能。我建议:vz_logs_req(req_msg, tid)和vs_logs_resp(tid)`。