我有两个表,其中一列都包含相同的数据。
第一个表名为“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'。
答案 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
有点可疑。通常,您只需使用=
进行比较。