mysql关于两张表查询的问题

我现在有两张表
iislog
图片说明
ips_global
图片说明

想根据iislog表查询出来的IP地址,得出对应的归属地,请问这语句该怎么写啊?

9个回答

如果没有关联,可以这么写
select g.ip_location, g.ip_isp from ips_global g left join iislog l on l.id=1 where g.ip_start<=l.client_ip and g.ip_end >= l.client_ip
id是主键,可以是任意条件,也就是你查询IP地址的条件。这是没有关联的时候查询。

zjq78577117
zjq78577117 回复Decky850721: 不客气,能帮到你,我很高兴
4 年多之前 回复
birgw2002
Decky850721 回复zjq78577117: 谢谢
4 年多之前 回复
zjq78577117
zjq78577117 回复Decky850721: 首先分析一下,where后面的条件中哪个的影响行数最多,就在那个字段建立索引。
4 年多之前 回复
zjq78577117
zjq78577117 回复Decky850721: 建立索引
4 年多之前 回复
birgw2002
Decky850721 非常感谢,用你的方法可以了,可能里面的数据太多,会很慢,这个不知道有没有什么好的解决办法?
4 年多之前 回复

可以看下


select B.ClientIP A.ip_location A.ip_isp  from ips_global A inner join  iislog B on (B.ClientIP >ip_start And B.ClientIP <ip_end)(这里要写一个IP转换的方法)

select clientip,(select ip_location from ips_global where ip_startclientip) from iislog
ip地址需要转化成同样格式的数字。

先进行连接操作后再查询。

select ip_location from iislog a inner join ips_global b on a.关联字段=b.关联字段

关联字段指的是这2张表是靠那个字段关联的

select clentip,ip_location from iislog a inner join ips_global b on a.关联字段=b.关联字段
关联字段指的是这2张表是靠那个字段关联的

select l.clientIp ,g.ip_location from iislog l,ips_global g where inet_aton(l.clientIp) between inet_aton(g.ip_start) and inet_aton(g.ip_end)

请问这两张表有关联吗?

birgw2002
Decky850721 这两张表没有关联的
4 年多之前 回复

这两张表没有关联

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!