我有一个 MariaDB 数据库,我有一个包含anduserInfo列的表。我想要另一列命名并自动从中获取国家并将其插入列中。我已经导入了 GeoIPLite2 并且已经有一个 SQL 查询,但我不知道如何使用 make mariadb 来做它而不是在我的代码上做它。ipAddresscountrycountryipAddresscountry
SELECT a.country_name
FROM geoipcountries a, geoipblocks b
WHERE INET_ATON('1.2.3.4') BETWEEN network_start_integer AND network_last_integer
AND b.geoname_id = a.geoname_id
这个查询给了我国家名称。我希望 MySQL从上面的查询输出中设置表中country列的值。userInfo
我也已经写了这个函数:
DELIMITER $$
CREATE FUNCTION getIpCountry(ip varchar(15)) RETURNS varchar(64)
BEGIN
declare result varchar(64);
select SQL_CACHE a.country_name into result FROM geoipcountries a, geoipblocks b WHERE INET_ATON(ip) BETWEEN network_start_integer AND network_last_integer AND b.geoname_id = a.geoname_id;
if (result is null) or (result = '') then
set result := 'unknown';
end if;
return result;
END$$
DELIMITER ;