首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL,Select inside Select Distinct返回多个值

MySQL,Select inside Select Distinct返回多个值
EN

Stack Overflow用户
提问于 2016-08-11 21:39:45
回答 1查看 25关注 0票数 1

我正在尝试用主表中的值创建一些表。精通PHP,但不精通MySQL。主表包含以下列:

代码语言:javascript
复制
Table Places
ISO
Country
Language
Region2 (is the estate)
Region4 (is ths city council)
ID (id for locality)
Locality

获取国家并不困难:

代码语言:javascript
复制
CREATE TABLE countries ( id integer(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
iso varchar(2) NOT NULL, language varchar(2) NOT NULL, 
name varchar(50) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO countries ( iso , language, name) 
SELECT DISTINCT ISO AS iso, Language as language, Country AS name FROM Places WHERE 1;

现在我必须创建州,议会和城市,我已经尝试了两天,使用类似的东西(我已经尝试了一些不同的代码):

代码语言:javascript
复制
CREATE TABLE states ( id integer(11) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
country_id integer(11) UNSIGNED NOT NULL, country_iso varchar(2) NOT NULL, 
name varchar(80) NOT NULL) ENGINE=MyISAM DEFAULT CHARSET=utf8;

INSERT INTO states (country_id, country_iso, name) 
SELECT DISTINCT 
  (SELECT countries.id AS country_id from countries WHERE countries.iso = Places.ISO),
  ISO as country_iso ,
  Region2 AS name FROM Places WHERE 1;

但是对于country_id,这个选择会返回所有的国家id,我只需要得到表中countries.iso和ISO匹配的国家id。

在这个表,州之后,我必须创建议会,从地方获取值,再次使用Select this,并再次尝试从州获取州id,也可能是从国家id获取。

请,任何人可以让我在正确的方式嵌套这个选择?谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-11 21:52:00

看起来你需要一个连接

代码语言:javascript
复制
INSERT INTO states (country_id, country_iso, name) 
SELECT DISTINCT  countries.countries.id , ISO, Places.Region2
from countries 
inner join Placesc on countries.iso = Places.ISO
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38898024

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档