1、表 a 是一列数字, 50 W 的记录量 : 2
5
12
14
17 2、表 b 有 5列,1200W 的记录量,字段分别是 表 a 的start范围、表 a 的end范围, col3, col4, col5 1 2 c13 c14 c15
3 3 c23 c24 c25
7 9 c33 c34 c35
13 20 c43 c44 c45 3、需求:a中的元素如果在b中的第一列与第二列之间,就算匹配成功,然后输出后面的3、4、5列到文件 c
例如 运行程序后,c中的内容应该是: c13 c14 c15
c43 c44 c45
c43 c44 c45 4、环境:suse linux mysql 5、自己写的 select很久才出来一个结果,看大家有没有更高效简洁的办法,谢谢!
5
12
14
17 2、表 b 有 5列,1200W 的记录量,字段分别是 表 a 的start范围、表 a 的end范围, col3, col4, col5 1 2 c13 c14 c15
3 3 c23 c24 c25
7 9 c33 c34 c35
13 20 c43 c44 c45 3、需求:a中的元素如果在b中的第一列与第二列之间,就算匹配成功,然后输出后面的3、4、5列到文件 c
例如 运行程序后,c中的内容应该是: c13 c14 c15
c43 c44 c45
c43 c44 c45 4、环境:suse linux mysql 5、自己写的 select很久才出来一个结果,看大家有没有更高效简洁的办法,谢谢!
select b.* from b inner join a on a.col1 between b.col1 and col2
select b.* from b inner join a on a.col1 between b.col1 and col2
select b.* from b inner join a on a.col1 between b.col1 and col2
select b.col3,b.col4,b.col5 from a straight_join b on a.col1 between b.col1 and col2
+---------+----------+------------+
| country | province | city |
+---------+----------+------------+
| 中国 | 内蒙古 | 乌兰察布市 |
| 中国 | 内蒙古 | 乌兰察布市 |
| 中国 | 内蒙古 | 乌兰察布市 |
| 中国 | 内蒙古 | 乌兰察布市 |
| 中国 | 内蒙古 | 包头市 |
| 中国 | 内蒙古 | 锡林郭勒盟 |
| 中国 | 内蒙古 | 锡林郭勒盟 |
| 中国 | 内蒙古 | 锡林郭勒盟 |
| 中国 | 内蒙古 | 锡林郭勒盟 |
| 中国 | 内蒙古 | 锡林郭勒盟 |
+---------+----------+------------+
10 rows in set (1 min 53.50 sec)mysql>
之前没看LZ在六楼的贴出结果集,以为楼主是想筛选b表,删选后b表的数据小于1200万:
select b.country, b.province, b.city from ip_region_myisam as b
where exists (select a.ip between b.start_ip and b.end_ip limit 1)
原来楼主想要join后有重复结果的结果集~