İki tabelim var;Mysql, başka bir tablodan seçim yaparak tüm satırları günceller
mysql> describe ipinfo.ip_group_country;
+--------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| ip_start | bigint(20) | NO | PRI | NULL | |
| ip_cidr | varchar(20) | NO | | NULL | |
| country_code | varchar(2) | NO | MUL | NULL | |
| country_name | varchar(64) | NO | | NULL | |
+--------------+-------------+------+-----+---------+-------+
mysql> describe logs.logs;
+----------------------+------------+------+-----+---------------------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------------------+------------+------+-----+---------------------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| ts | timestamp | NO | | CURRENT_TIMESTAMP | |
| REMOTE_ADDR | tinytext | NO | | NULL | |
| COUNTRY_CODE | char(2) | NO | | NULL | |
+----------------------+------------+------+-----+---------------------+----------------+
Ben ilk tablodan ip adresini kullanarak ülke kodunu seçebilirsiniz: logs.logs olarak
mysql> SELECT country_code FROM ipinfo.`ip_group_country` where `ip_start` <= INET_ATON('74.125.45.100') order by ip_start desc limit 1;
+--------------+
| country_code |
+--------------+
| US |
+--------------+
, bütün REMOTE_ADDR (ip adresi) kümesine sahip, ancak tüm COUNTRY_CODE girişleri boş. Şimdi, ipinfo tablosunu kullanarak COUNTRY_CODE'yi uygun bir şekilde doldurmak istiyorum. Bunu nasıl yapabilirim?
Teşekkürler!
Teşekkürler. Bir hata alıyorum: 'mysql> logs.log'ları l, ipinfo.ip_group_country olarak ayarlayın c set l.COUNTRY_CODE = max (c.country_code) c.ip_start <= INET_ATON (l.REMOTE_ADDR); HATA 1111 (HY000): Grup işlevinin geçersiz kullanımı – anon
Bunun için üzgünüz, haklısınız, daha iyi çalışması gereken bir şeyle düzenledim. – nicolaskruchten
teşekkürler, bunu kullanacağım – anon