繁体   English   中英

查询以便在mysql上合并2个表

[英]query in order to union 2 tables on mysql

我正在使用mysql 5.5,下面有2个表

+--------+---------------+---------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |
+--------+---------------+---------------+
|    115 |       33.3333 |       43.3333 |
|    116 |            70 |            80 |
+--------+---------------+---------------+

+--------+----------------+----------------+
| CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+----------------+----------------+
|    117 |             45 |             35 |
+--------+----------------+----------------+

通过完全加入,我得到以下信息:

+--------+---------------+---------------+--------+----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT | CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+--------+----------------+----------------+
|    115 |       33.3333 |       43.3333 |   NULL |           NULL |           NULL |
|    116 |            70 |            80 |   NULL |           NULL |           NULL |
|   NULL |          NULL |          NULL |    117 |             45 |             35 |
+--------+---------------+---------------+--------+----------------+---------------+

我需要这个:

 +--------+---------------+--------------+-----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |  DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+-----------------+----------------+
|    115 |       33.3333 |       43.3333 |            NULL |           NULL |
|    116 |            70 |            80 |            NULL |           NULL |
|    117 |          NULL |          NULL |              45 |             35 |
+--------+---------------+---------------+-----------------+---------------+

有什么建议么?

非常感谢Zane,对不起,但是在我不能很好解释之前,我可以举个例子:

+--------+---------------+---------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |
+--------+---------------+---------------+
|    115 |       33.3333 |       43.3333 |
|    116 |            70 |            80 |
|    117 |            48 |            51 |
+--------+---------------+---------------+

+--------+----------------+----------------+
| CALLID | DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+----------------+----------------+
|    117 |             45 |             35 |
|    118 |             37 |             26 |
+--------+----------------+----------------+

我将需要:

 +--------+---------------+--------------+-----------------+----------------+
| CALLID | DL_THROUGHPUT | UL_THROUGHPUT |  DL_DATA_VOLUME | UL_DATA_VOLUME |
+--------+---------------+---------------+-----------------+----------------+
|    115 |       33.3333 |       43.3333 |            NULL |           NULL |
|    116 |            70 |            80 |            NULL |           NULL |
|    117 |            48 |            51 |              45 |             35 |
|    118 |          NULL |          NULL |              37 |             26 |        
+--------+---------------+---------------+-----------------+---------------+

您可以在知道最终结果不适用的地方手动插入NULL值:

SELECT CALLID, 
       DL_THROUGHPUT, 
       UL_THROUGHPUT, 
       NULL AS DL_DATA_VOLUME,
       NULL AS UL_DATA_VOLUME
FROM   tbl_1

UNION ALL

SELECT CALLID, 
       NULL, 
       NULL, 
       DL_DATA_VOLUME, 
       UL_DATA_VOLUME
FROM   tbl_2

更新:

您可以使用:

SELECT    a.CALLID,
          b.DL_THROUGHPUT, 
          b.UL_THROUGHPUT, 
          c.DL_DATA_VOLUME, 
          c.UL_DATA_VOLUME
FROM      (
          SELECT CALLID FROM tbl_1 UNION SELECT CALLID FROM tbl_2
          ) a
LEFT JOIN tbl_1 b ON a.CALLID = b.CALLID
LEFT JOIN tbl_2 c ON a.CALLID = c.CALLID
ORDER BY  a.CALLID

SQLFiddle演示

试试这个查询-

SELECT
  t.CALLID,
  t1.DL_THROUGHPUT,
  t2.UL_THROUGHPUT,
  t1.DL_DATA_VOLUME,
  t2.UL_DATA_VOLUME
FROM (SELECT CALLID FROM table1 UNION SELECT CALLID FROM table2) t
LEFT JOIN table1 t1
  ON t1.CALLID = t.CALLID
LEFT JOIN table2 t2
  ON t2.CALLID = t.CALLID

如果您需要加入,我将寻求:

SELECT callid, dl_throughput, ul_throughput, dl_data_volume, ul_data_volume
  FROM table1
  FULL JOIN table2 USING(callid)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM