简体   繁体   English

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

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

I´m working with mysql 5.5 and I have 2 tables, below 我正在使用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 |
+--------+----------------+----------------+

with full join I get this: 通过完全加入,我得到以下信息:

+--------+---------------+---------------+--------+----------------+----------------+
| 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 |
+--------+---------------+---------------+--------+----------------+---------------+

and I need this: 我需要这个:

 +--------+---------------+--------------+-----------------+----------------+
| 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 |
+--------+---------------+---------------+-----------------+---------------+

Any suggestions? 有什么建议么?

Thanks you very much Thanks you Zane, sorry but before I don´t explain well also I can to have case as: 非常感谢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 |
+--------+----------------+----------------+

and I will need: 我将需要:

 +--------+---------------+--------------+-----------------+----------------+
| 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 |        
+--------+---------------+---------------+-----------------+---------------+

You can manually insert NULL values where you know they would be not applicable in the final result: 您可以在知道最终结果不适用的地方手动插入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

Update: 更新:

You can use: 您可以使用:

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 Demo SQLFiddle演示

Try this query - 试试这个查询-

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

If you need a join, I would go for: 如果您需要加入,我将寻求:

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