MySql:错误#1242使用从另一个表获取的数据更新列

MySql:错误#1242使用从另一个表获取的数据更新列,mysql,sql,Mysql,Sql,我需要用从另一个表中获取的数据更新当前为空的表的一列 我有两张桌子。“ar_geozone”表具有以下结构 ID -> primary key; code_countries; code_city; name_city; longitude_city; latitude_city; name_countries; name_regions; kind_regions. “名称区域、种类区域”列为空,我只想更新“名称区域”列 第二个“区域”表具有以下结构: country; code; n

我需要用从另一个表中获取的数据更新当前为空的表的一列

我有两张桌子。“ar_geozone”表具有以下结构

ID -> primary key;
code_countries;
code_city;
name_city;
longitude_city;
latitude_city;
name_countries;
name_regions;
kind_regions.
“名称区域、种类区域”列为空,我只想更新“名称区域”列

第二个“区域”表具有以下结构:

country;
code;
name;
kind.
表“regions”中的所有列都有记录。然而,记录数量低于“ar_geozone”表中的记录数量

使用以下查询

UPDATE ar_geozone ct 
    SET name_regions = 
     (SELECT name FROM regions ag 
      WHERE ag.country LIKE ct.code_countries)
系统给我错误信息:

“#1242-子查询返回超过1行”


如何修改查询以更新列?

类SQL运算符获取多行。这意味着您正在尝试使用多个国家/地区名称更新名称\地区

UPDATE ar_geozone ct 
    SET name_regions = 
     (SELECT GROUP_CONCAT(name SEPARATOR ', ') FROM regions ag 
      WHERE ag.country LIKE ct.code_countries)

它会将多行组合成逗号分隔的字符串。

您需要找到一种方法,使子查询只返回一行。一些示例数据在这里会有帮助。表是空的吗?或者仅仅是1个字段是空的?显然,表
区域中有多条记录与表
ar\u geozone
中待更新的记录相匹配。您需要以某种方式指定哪个应用于
更新
。两个表中是否都有一个公共主键字段?“regions”表的“country”列是否唯一