Mysql与复杂的子查询连接

时间:2017-05-11 09:41:07

标签: mysql join subquery

我有两个select语句,我希望通过它们的公共列加入它们:

第一次查询:

  

选择self_code为' DSLAM_code',将(self_code)计数为'已注册'来自obj_port group by self_code;

输出:

+------------+------------+
| DSLAM_code | Registered |
+------------+------------+
| 10000      |        317 |
| 10001      |        344 |
| 10002      |         93 |
+------------+------------+

第二次查询:

  

选择substring_index(dslamportid,":",1)作为DSLAM_code,   count(substring_index(dslamportid,":",1))作为活动来自r​​adacct   dslamportid喜欢'%:%' group by substring_index(dslamportid,":",1);

输出:

+------------+--------+
| DSLAM_code | Active |
+------------+--------+
| 10000      |    265 |
| 10001      |    299 |
| 10002      |     83 |
+------------+--------+

我尝试使用以下查询加入两个输出表,但未成功:

  

选择A.self_code为' DSLAM_code',A.count(self_code)为'已注册'   来自obj_port一个由F.self_code组成的团队离开了加入(选择   dstring,substring_index(dslamportid,":",1)   count(substring_index(dslamportid,":",1))作为radacct的计数   dslamportid喜欢'%:%' group by substring_index(dslamportid,":",1))B   在A.self_code = B.dslam;

我得到语法错误:

  

错误代码:1064。您的SQL语法有错误;检查   手册,对应右边的MySQL服务器版本   在左边连接附近使用的语法(选择   substring_index(dslamportid,":",1)as dslam,count(substring _' at line)   2

先谢谢亲爱的社区!

1 个答案:

答案 0 :(得分:0)

好的,我找到了办法:

  

从(选择self_code)中选择a.DSLAM_code,a.Registered,b.active   作为'DSLAM_code',从obj_port组计数(self_code)为'Registered'   通过self_code)左连接(选择   substring_index(dslamportid,“:”,1)作为DSLAM_code,   count(substring_index(dslamportid,“:”,1))作为活动从radacct在哪里   dslamportid喜欢'%:%'group by substring_index(dslamportid,“:”,1))b   在a.dslam_code = b.dslam_code;