select a.省,a.市,count(b.*) from 手机号段表 a,手机号码表 b where a.手机号=b.手机号 and b.手机号>=a.起始号码 and b.手机号<=a.结束号码 group by a.省,a.市
写错了: select a.省,a.市,count(b.*) from 手机号段表 a,手机号码表 b where b.手机号>=a.起始号码 and b.手机号<=a.结束号码 group by a.省,a.市
1. 使用索引 2. 正确使用查询语句: 如楼上: select a.省,a.市,count(b.*) from 手机号段表 a,手机号码表 b where a.手机号=b.手机号 and b.手机号>=a.起始号码 and b.手机号<=a.结束号码 group by a.省,a.市
或者这样: select c.省,c.市,count(c.*) from ( select a.省,a.市,b.手机号 from 手机号段表 a left join 手机号码表 b on b.手机号>=a.起始号码 and b.手机号<=a.结束号码 ) c group by c.省,c.市这两种方法你试一下,我觉得后一种好一些。
没有验证,仅供参考 有起始号码 结束号码 如果存在规律,比如左5位相同的,且和其他城市不同的 select count(*) as shuliang from table2 as t2 group by substring(t2.手机号码,1,5) left join table1 as t1 on substring(t2.手机号码,1,5)=substring(t1.起始号段,1,5)
手机号段表 a,手机号码表 b
where a.手机号=b.手机号
and b.手机号>=a.起始号码 and b.手机号<=a.结束号码
group by a.省,a.市
select a.省,a.市,count(b.*) from
手机号段表 a,手机号码表 b
where b.手机号>=a.起始号码 and b.手机号<=a.结束号码
group by a.省,a.市
2. 正确使用查询语句:
如楼上:
select a.省,a.市,count(b.*) from
手机号段表 a,手机号码表 b
where a.手机号=b.手机号
and b.手机号>=a.起始号码 and b.手机号<=a.结束号码
group by a.省,a.市
select c.省,c.市,count(c.*) from
(
select a.省,a.市,b.手机号
from 手机号段表 a
left join 手机号码表 b on
b.手机号>=a.起始号码 and b.手机号<=a.结束号码
) c
group by c.省,c.市这两种方法你试一下,我觉得后一种好一些。
有起始号码 结束号码 如果存在规律,比如左5位相同的,且和其他城市不同的
select count(*) as shuliang from table2 as t2 group by substring(t2.手机号码,1,5) left join table1 as t1 on substring(t2.手机号码,1,5)=substring(t1.起始号段,1,5)