如何用另一个表中的FK填充一个表中的FK列?

时间:2019-05-03 17:27:16

标签: sql postgresql

我有一个足球世界杯数据库。这些是我目前正在使用的两个重要表格:

CREATE TABLE Countries(
   Cid SERIAL PRIMARY KEY,
   Name VARCHAR(256) NOT NULL UNIQUE
);

CREATE TABLE Clubs(
   Ncid SERIAL PRIMARY KEY,
   Name VARCHAR(256) NOT NULL UNIQUE,
   Cid INT REFERENCES Countries NOT NULL
);

因此,我在clubs表中添加了“国家”列,代表该俱乐部所在的国家。现在的问题是,我需要用cid填充clubs表的cid列与国家/地区表中的国家/地区匹配。

我已经尝试过了,但是没有用:

ALTER TABLE clubs ADD COLUMN country VARCHAR(255)
INSERT INTO clubs(name, country) 
SELECT DISTINCT club_name, club_country 
FROM tempsquads; //this loads the data from a temporary tabe into my table

INSERT INTO clubs(cid) 
SELECT cid 
FROM countries 
WHERE clubs.country = countries.name;

有人知道如何执行这样的查询吗?

1 个答案:

答案 0 :(得分:0)

在您的INSERT中,将临时变量链接到国家/地区:

INSERT INTO CLUBS(name, cid)
(SELECT t.club_name, c.cid
FROM tempsquads t
INNER JOIN COUNTRIES c ON t.club_country=c.name)

请勿将国家/地区名称字段添加到clubs表中-当需要名称时,您将在id上进行链接。