Sql 根据另一个表的值从另一个表中选择列
好吧,标题有点乱,但我有一个像这样的桌子城市:Sql 根据另一个表的值从另一个表中选择列,sql,postgresql,postgresql-9.4,Sql,Postgresql,Postgresql 9.4,好吧,标题有点乱,但我有一个像这样的桌子城市: id | name | population 1 | Bla bla | 1323 2 | Blaer | 35365 现在我从另一个表中选择一个表: INSERT INTO tmp ( name, age, city_id ) SELECT NAME, AGE, CITY FROM main; 问题是选择城市,因为城市是城市的名称,但我需要id。所以基本上我想要这样的东西,但这不起作用: I
id | name | population
1 | Bla bla | 1323
2 | Blaer | 35365
现在我从另一个表中选择一个表:
INSERT INTO tmp (
name, age, city_id
)
SELECT
NAME,
AGE,
CITY
FROM main;
问题是选择城市,因为城市是城市的名称,但我需要id。所以基本上我想要这样的东西,但这不起作用:
INSERT INTO tmp (
name, age, city_id
)
SELECT
NAME,
AGE,
city.id FROM city WHERE city.name = CITY
FROM main;
与city表进行内部联接,并在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 ;
从值中查找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
试试这个
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