0

私は tbl1 というデータベースにテーブルを持っています。このテーブルでは、ip2nations データベースを使用してそれらを比較できるように、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 は、Web サイトでダウンロードできるテーブルです。2 つの列があります。

ip         |  country

データベースにあるすべての値 (100k) に対して更新クエリを実行して、持っている ip_number を国コード (ip2nation テーブルの国列) に変換できるようにしたいと考えています。サンプルクエリで < 識別子を使用して更新クエリを記述する方法がわからないため、これを行うにはどうすればよいですか。

4

1 に答える 1

0

It would be better if you had database with range , for example ip_start , ip_end ,then you could just select country where ip is between these ip_start and ip_end , but for your example , you can update table this way

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 に答える