J'ai deux tabels;Mysql mettre à jour toutes les lignes en fonction de sélectionner dans une autre table
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 | |
+----------------------+------------+------+-----+---------------------+----------------+
Je peux sélectionner le code de pays en utilisant l'adresse IP de première table:
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 |
+--------------+
En logs.logs, j'ai tous les REMOTE_ADDR (adresse ip) ensemble, mais toutes les entrées de COUNTRY_CODE sont vides. Maintenant, je veux remplir COUNTRY_CODE de manière appropriée en utilisant la table ipinfo. Comment puis-je faire ceci?
merci!
merci. Je reçois une erreur: mysql met à jour logs.logs comme l, ipinfo.ip_group_country comme c set l.COUNTRY_CODE = max (c.country_code) où c.ip_start <= INET_ATON (l.REMOTE_ADDR); ERREUR 1111 (HY000): Utilisation incorrecte de la fonction de groupe – anon
Désolé, vous avez raison, je l'ai édité avec quelque chose qui devrait fonctionner mieux. – nicolaskruchten
merci, je vais utiliser celui-là – anon