也许这是一个愚蠢的问题,但是我有点卡在这里...所以我有一张桌子A
state | city
MI Detroit
...
我有一个状态表B
state_id | state
1 MI
...
还有城市表C
city_id | city | state_id
1 Detroit NULL
我想在city
表中添加一个外键列,我已经使用语法ALTER TABLE city ADD CONSTRAINT city_state FOREIGN KEY (state_id) REFERENCES state(state_id);
在其中创建了一个外键列,但是该外键列充满了{{1} },因为它不知道城市表与州表之间的关系。
如何用正确的状态ID填充外键列? 有人可以帮忙吗?
答案 0 :(得分:2)
您可以在join
中使用update
。在Postgres中,它看起来像:
update city
set state_id = b.state_id
from a join
b
on a.state = b.state
where city.city = a.city;
在MySQL中:
update city join
a
on city.city = a.city join
b
on a.state = b.state
set city.state_id = b.state_id;
答案 1 :(得分:-1)
您用于Mysql的SQL代码是:
CREATE TABLE city (
city_id int NOT NULL,
name varchar(255) NOT NULL,
state_id int,
PRIMARY KEY (city_id),
FOREIGN KEY (state_id) REFERENCES state(state_id)
);
如果要添加新行并引用州表中的另一行,则需要添加该行的ID,例如:
INSERT INTO city VALUES (1, "Los Angeles", 1);
1将是状态表中的ID!