求助:多表统计各ISP邮箱数量的SQL实现及错误解决
多表按MY_ISP汇总统计的正确SQL写法
你的SQL报错#1248 - Every derived table must have its own alias,核心原因是括号里的子查询(派生表)必须指定别名,而且你的逻辑没法实现按ISP分类汇总——你当前的子查询是统计每个表的MY_ISP总数,union all后只能得到各表的总数,不是按ISP分组的结果。
正确的实现思路是先把所有表的MY_ISP数据合并,再分组统计:
SELECT COUNT(`my_isp`) AS `COUNT`, `my_isp` FROM ( -- 依次把所有15+张表的MY_ISP字段合并,用UNION ALL保留重复数据 SELECT `my_isp` FROM `table1` UNION ALL SELECT `my_isp` FROM `table2` UNION ALL SELECT `my_isp` FROM `table3` -- 在这里继续添加剩余所有表的SELECT语句,格式和上面一致 ) AS combined_isp_data -- 必须给派生表加别名,解决报错问题 GROUP BY `my_isp`
补充说明:
- 使用
UNION ALL而不是UNION,因为UNION会自动去重,而你需要统计同一邮箱在多张表中的所有出现次数 - 如果需要排除MY_ISP为空的记录,可以在每个子查询里加上
WHEREmy_ispIS NOT NULL
内容的提问来源于stack exchange,提问作者John Beasley
相关产品推荐
相关产品推荐

