2017-05-09 283 views
0

好了,所以标题是有点乱,但我有一个表city这样的:选择基于另一个表的值从另一个表列

id | name  | population 
1 | Bla bla | 1323 
2 | Blaer | 35365 

现在,我选择到一个表从又另一个表:

INSERT INTO tmp (
    name, age, city_id 
) 
SELECT 
    NAME, 
    AGE, 
    CITY 
FROM main; 

的问题是SELECT CITY,因为CITY是城市的名字,但我需要的id。所以基本上我想是这样的,但是这并不工作:

INSERT INTO tmp (
    name, age, city_id 
) 
SELECT 
    NAME, 
    AGE, 
    city.id FROM city WHERE city.name = CITY 
FROM main; 

回答

0

做一个INNER JOIN与城市表和SELECT子句中使用它。

INSERT INTO tmp (
    name, age, city_id 
) 
SELECT 
    NAME, 
    AGE, 
    c.id 
FROM main m 
INNER JOIN city c on m.city=c.name ; 
0

从价值中找到id有点不寻常。你为什么把城市存放在主表中?你应该在那里存储城市ID。

但一个简单连接就可以了:

INSERT INTO tmp (name, age, city_id) 
SELECT 
    m.NAME, 
    m.AGE, 
    c.id 
FROM main m join city c on m.city = c.name 
0

试试这个

INSERT INTO tmp(
    name, 
    age, 
    city_id 
) 
SELECT 
    m.name AS name, 
    m.age AS age, 
    (SELECT c.id FROM city c WHERE c.name = m.city) AS city_id 
FROM main m 
+0

如果city.name是独一无二的 – JerryHuang

相关问题