通过 SQL 中的一个匹配键关联两个表?

Relate two tables by one matching key in SQL?

我是 SQL 的新手,我知道 FOREIGN KEY,但我想不出一种方法来 link 两个 table其他一键匹配

例如,有一个用户的“姓名”设置为“John”,post 的“作者”设置为“John”。

我应该写什么查询才能让 SQL 查看“用户”table,找到与 post 的作者相匹配的内容,然后将 FOREIGN KEY 设置为该用户的 ID?

这是一对多的关系。

您将按如下方式构建表格:

create table users (
    user_id int primary key auto_increment,
    name varchar(50)
);

create table posts (
    post_id int primary key auto_increment,
    user_id int not null,
    content varchar(200),
    constraint fk_user_id foreign key (user_id) references users(user_id)
);

然后就可以使用外键连接表了:

select p.*, u.name as user_name
from posts p
inner join users u on u.user_id = p.user_id

假设您已经有一个 users 和一个 posts table,其中 posts 有一个 user_id foreign key 引用 users.id,你可以这样做:

update posts
join users
on posts.author = users.name
set posts.user_id = users.id;

您可能面临的问题是某些名称可能重复。