私は2つのタブを持っています。Mysqlは別のテーブルからの選択に基づいてすべての行を更新します
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 | |
+----------------------+------------+------+-----+---------------------+----------------+
私は最初のテーブルからIPアドレスを使用して国コードを選択することができます。logs.logsで
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 |
+--------------+
、私はすべてのREMOTE_ADDR(IPアドレス)が設定されているが、すべてのCOUNTRY_CODEエントリが空です。これで、ipinfoテーブルを使用してCOUNTRY_CODEを適切に設定します。これどうやってするの?
ありがとうございました!
ありがとうございます。 L、Cセットl.COUNTRY_CODE = MAX(c.country_code)c.ip_start <= INET_ATON(l.REMOTE_ADDR)としてipinfo.ip_group_countryとして 'のMySQL>更新logs.logs;:私はエラーを取得します ERROR 1111(HY000):そのことについて申し訳ありません – anon
function'グループの不正な使用は、あなたが正しい、私はより良い動作するはず何かでそれをedittedました。 – nicolaskruchten
ありがとう、私はその1つを使用します – anon