MySql:错误#1242使用从另一个表获取的数据更新列
我需要用从另一个表中获取的数据更新当前为空的表的一列 我有两张桌子。“ar_geozone”表具有以下结构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
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”列是否唯一