gpt4 book ai didi

Mysql根据从另一个表中选择更新所有行

转载 作者:可可西里 更新时间:2023-11-01 06:31:51 25 4
gpt4 key购买 nike

我有两个表格;

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 地址选择国家代码:

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 |
+--------------+

在 logs.logs 中,我设置了所有 REMOTE_ADDR(IP 地址),但所有 COUNTRY_CODE 条目都是空的。现在,我想使用 ipinfo 表适本地填充 COUNTRY_CODE。我该怎么做?

谢谢!

最佳答案

尝试

UPDATE logs.logs
SET COUNTRY_CODE = (
SELECT country_code
FROM ipinfo.ip_group_country
WHERE ipinfo.ip_start <= INET_ATON(logs.REMOTE_ADDR)
LIMIT 1
)
WHERE COUNTRY_CODE IS NULL

如果列类型必须匹配失败,您将不得不更改 logs.logs 表,使 REMOTE_ADDR 列与 ip_cidr 表的类型相同 (varchar(20))。

关于Mysql根据从另一个表中选择更新所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4817004/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com