2013-10-24 80 views
0

我有一個名爲tbl1的數據庫中的表,並在此我有IP地址轉換爲長數,以允許我使用ip2nations databse比較它們。比如我有使用ip2nation更新mysql查詢IP值

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表)。我如何做到這一點,因爲我不知道如何在示例查詢中使用<標識符編寫更新查詢。

+0

你能更具體嗎?你想要更新什麼?哪個表的哪一列? – ogres

+0

已更新問題並添加了我想要填充的列。想要使用ip_number獲取國家代碼。 – noelnoegdip

回答

0

這將是更好,如果你有沒有和範圍的數據庫,例如ip_start,ip_end,那麼你可以只選擇國家,知識產權是這些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)