从我们的IP地址

时间:2015-07-01 21:36:14

标签: mysql ip-address

我们从DB-IP.com下载了这个包含位置/国家的IP地址列表。

他们拥有的结构化数据如下所示,您可以看到它的范围,而不是单独的IP。我们称之为IPAddress_table。

IPStart; IPEnd; Country; State; City
0.0.0.0 0.255.255.255   US  California  Los Angeles
1.0.0.0 1.0.0.255   AU  Queensland  South Brisbane
1.0.1.0 1.0.3.255   CN  Fujian  Fuzhou
1.0.4.0 1.0.7.255   AU  Victoria    Melbourne
1.0.8.0 1.0.15.255  CN  Guangdong   Guangzhou

在我们的数据库用户(user_table)中,我们有超过100,000名拥有IP地址的用户。

如何在MySQL中加入这两个表,因为IP地址源是范围的起始端?

感谢您的反馈。

由于

1 个答案:

答案 0 :(得分:1)

请尝试以下操作:

Assuming table names are IPAddress_table and user_table
Assuming Field Names are:
user_table : IPAddress (and others), 
IPAddress_table: IPStart, IPEnd (and others)

尝试SQL:

SELECT user_table.*, IPAddress_table.*
FROM user_table 
  INNER JOIN IPAddress_table 
    ON INET_ATON(user_table.IPAddress) 
      BETWEEN INET_ATON(IPAddress_table.IPStart) 
        AND INET_ATON(IPAddress_table.IPEnd)

编辑:您可能希望将其更改为LEFT JOIN以获取所有用户,甚至找不到适合的IP范围。