Mam dwa tabele;Mysql zaktualizować wszystkie wiersze na podstawie wybierz z innej tabeli
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 | |
+----------------------+------------+------+-----+---------------------+----------------+
mogę wybrać kod kraju za pomocą adresu IP, z pierwszej tabeli:
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 |
+--------------+
W logs.logs, mam wszystkie (adres IP) zestaw REMOTE_ADDR, ale wszystkie wpisy COUNTRY_CODE są puste. Teraz chcę poprawnie wypełnić COUNTRY_CODE za pomocą tabeli ipinfo. Jak mogę to zrobić?
dziękuję!
dziękuję. Wystąpił błąd: 'mysql> zaktualizuj logs.logs jako l, ipinfo.ip_group_country jako c zestaw l.COUNTRY_CODE = max (c.country_code) gdzie c.ip_start <= INET_ATON (l.REMOTE_ADDR); BŁĄD 1111 (HY000): nieprawidłowe użycie funkcji grupy " – anon
Przepraszam, masz rację, zmontowałem to z czymś, co powinno działać lepiej. – nicolaskruchten
dzięki, użyję tego – anon