【问题标题】:How can I populate my FK column in one table with the FK from another table?如何使用另一个表中的 FK 填充一个表中的 FK 列?
【发布时间】:2019-05-03 17:27:15
【问题描述】:

我有一个足球世界杯数据库。这是我现在正在处理的两个重要表:

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 表中添加了一个列“country”,它代表俱乐部所在的国家/地区。现在的问题是我需要使用与国家/地区匹配的 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;

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

【问题讨论】:

  • 我错过了一些东西。你怎么知道俱乐部在哪个国家?
  • 我从一个包含所有世界杯数据的 csv 文件中获取该信息。

标签: sql postgresql


【解决方案1】:

在您的 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)

不要将国家/地区名称字段添加到俱乐部表中 - 当您需要名称时,您将链接到 id。

【讨论】:

  • 非常感谢它的工作!我不知道我可以为此使用内部联接。
猜你喜欢
  • 2011-07-30
  • 1970-01-01
  • 2011-12-27
  • 1970-01-01
  • 2021-07-03
  • 2017-03-02
  • 1970-01-01
  • 2011-10-12
  • 1970-01-01
相关资源
最近更新 更多