MySql:Inser Into ...选择...返回#1054错误

时间:2017-12-05 22:36:54

标签: mysql sql

我有两个表,其中一列都包含相同的数据。

第一个表名为“countries”,具有以下结构:

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

第二个表名为“ar_geozone”,具有以下结构:

country;
code_city;
name_city;
longitude;
latitude.

我想将“ar_geozone”中的所有数据复制到“国家/地区”,以查找“ar_geozone.country”和“countries.code_countries”之间匹配的行。

但是当我使用这个SQL字符串时,

INSERT INTO countries (code_city, name_city, longitude_city, latitude_city) 
SELECT code_city, name_city, longitude, latitude FROM ar_geozone
WHERE ar_geozone.country LIKE countries.code_countries

系统返回错误:#1054 - 'where子句'中的未知列'countries.code_countries'。

3 个答案:

答案 0 :(得分:2)

使用更新而不是插入

根据我的理解,您已经在表格中填充了code_countries,您必须填写code_city,name_city,longitude_city,latitude_city列。 而不是插入尝试使用更新

  • " UPDATE countries ct SET code_city =(SELECT code_city FROM ar_geozone ag WHERE ag.country LIKE ct.code_countries)"

类似地,你可以写其他专栏。

=======

答案 1 :(得分:0)

我不确定但是试试这个......如果我错了,请更正

INSERT INTO countries (code_city, name_city, longitude_city, latitude_city) SELECT code_city, name_city, longitude, latitude FROM ar_geozone WHERE ar_geozone.country LIKE code_countries

答案 2 :(得分:0)

使用join或子查询:

INSERT INTO countries (code_city, name_city, longitude_city, latitude_city) 
    SELECT code_city, name_city, longitude, latitude
    FROM ar_geozone ag
    WHERE EXISTS (SELECT 1 
                  FROM countries c
                  WHERE ag.country LIKE c.code_countries
                 );

LIKE c.code_countries有点可疑。通常,您只需使用=进行比较。