0

我在一个名为 tbl1 的数据库中有一个表,其中我将 IP 地址转换为长数字,以便我使用 ip2nations 数据库比较它们。例如我有

ip           | ip_number    |   country code
27.33.41.150 | 455158166    |

然后我下载了ip2nation数据库并将其添加到我的数据库中。他们将数字转换为国家/地区的示例是这样的

SELECT country 
FROM ip2nation 
WHERE ip < 455158166
ORDER BY ip DESC 
LIMIT 0,1

ip2nation 是他们可以在其网站上下载的表格。它有 2 列,分别是

ip         |  country

我希望能够对数据库中的所有值(100k)运行更新查询,以将我必须的 ip_number 转换为国家代码(ip2nation 表中的国家列)。我将如何执行此操作,因为我不确定如何在示例查询中使用 < 标识符编写更新查询。

4

1 回答 1

0

如果您有范围的数据库会更好,例如 ip_start , ip_end ,然后您可以选择 ip 在这些 ip_start 和 ip_end 之间的国家,但对于您的示例,您可以通过这种方式更新表

UPDATE your_table t
SET t.country_code =
   (SELECT i.country
      FROM ip2nation i
     WHERE i.ip < t.ip
     ORDER BY i.ip DESC LIMIT 0, 1)
于 2013-10-24T12:56:11.413 回答