在 SQL 服务器中创建连接 table

Creating a join table in SQL Server

假设我有两个 table,A 和 B,每个都有唯一的 ID 列 A_id 和 B_id。那么假设我有一天醒来并确定两个 table 有关系。因此,我创建了一个包含 A_id、B_id 对的 table AB。然后我去编写一个 SQL 服务器脚本,根据 table 中的其他数据插入这些对,比如 A_name 和 B_name。我希望实际的插入能够像这样工作(尽管用户通过 Powershell 脚本或其他方式输入了更高级的 WHERE 子句):

INSERT INTO AB (A_id, B_id) 
VALUES 
((SELECT (A_id) FROM A WHERE A_name = 'bob'), 
 (SELECT (B_id) FROM B WHERE B_name = 'john'))

我不确定此类操作的语法是否正确。谁能指出我正确的方向?

而不是从两个子 select 中 selecting,你应该 select 从两个表的连接中,使用你将要使用的任何逻辑:

INSERT INTO AB (A_id, B_id)
SELECT a.A_id, b.B_id
FROM A 
INNER JOIN B
 ON A.SomeColumn=B.SomeColumn

或者,为了更准确地复制您的示例,它看起来像这样:

INSERT INTO AB (A_id, B_id)
SELECT a.A_id, b.B_id
FROM A 
INNER JOIN B
 ON A.A_name='bob'
 AND B.B_name='john'