mysql - 将2个表的数据复制到1个表

标签 mysql sql

我有 2 个表。

  1. VoiceZone1 : 它包含 4 列(Uname, TID, Res_Msg, Req_Time)
  2. VoiceZone2 : 它也包含 (Uname, TID, Res_Msg, Req_Time)

有另一个表VoiceZoneLog

想要将 VoiceZone1 的所有列复制到 VoiceZoneLog 的两列 Res_Msg, Req_Time VoiceZone2VoiceZoneLog 表。

请指导我使用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'

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

最佳答案

您的查询很好,但最好使用标准连接语法编写并列出插入的列:

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)`。

关于mysql - 将2个表的数据复制到1个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18509192/

相关文章:

mysql - 如何创建在插入行后增加列值的触发器?

php - MySQL 删除行如果

php - 更改数据库中图像的路径

php - 将图像添加到文件夹并使用 php 将其名称保存在数据库中

每条记录和按月分组的 SQL Snowflake 最短日期

php - 如何防止 PHP 中的 SQL 注入(inject)?

c# - Entity Framework 6 + MySQL : Model tables are not created automatically

java - 用Java查询MySQL数据库,指定需要哪些字段会更高效吗?

mysql - nagios mysql复制插件显示远程服务器的失败状态

按日期选择博客文章浏览量的 MySQL 性能