2017-05-09 238 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

相關問題