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

时间:2017-12-06 09:21:21

标签: mysql sql

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

我有两张桌子。 " ar_geozone" table具有以下结构

ID -> primary key;
code_countries;
code_city;
name_city;
longitude_city;
latitude_city;
name_countries;
name_regions;
kind_regions.

" name_regions,kind_regions"列是空的,我想只更新" name_regions"柱

第二个"地区" table具有以下结构:

country;
code;
name;
kind.

表格中的所有列"地区"有记录。但是,记录数量低于表格中的数量" ar_geozone"。

使用以下查询

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

系统给我错误:

  

"#1242 - 子查询返回超过1行"。

我应该如何修改查询以更新列?

1 个答案:

答案 0 :(得分:1)

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

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

它会将多行合并为逗号分隔的String。