2017-12-06 15 views
0

現在空のテーブルの列を別のテーブルから取得したデータで更新する必要があります。MySql:エラー#1242別のテーブルから取得したデータで列を更新する

私は2つのテーブルを持っています。 「ar_geozone」テーブルは

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」欄を更新したいが

秒「領域」表は、以下を有する以下の構造を有します。構造:

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 - Subquery returns more than 1 row".

にはどうすれば列を更新するクエリを変更する必要がありますか?

+0

サブクエリが1行だけを返すような方法を見つける必要があります。いくつかのサンプルデータがここで役立ちます。 –

+0

は空のテーブルですか?それとも1つのフィールドだけが空であるか? –

+0

テーブル 'ar_geozone'の更新対象のレコードと一致するテーブル' regions'に複数のレコードがあります。 'UPDATE'のためにどちらを使うべきかを何とか指定する必要があります。 –

答えて

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に複数の行が結合されます。

関連する問題