[英]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
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
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.