1

假设我有两个表 A 和 B,每个表都有唯一的 ID 列 A_id 和 B_id。然后假设我有一天醒来并确定这两个表有关系。因此,我创建了一个包含 A_id、B_id 对的表 AB。然后我会编写一个 SQL 服务器脚本,根据表中的其他数据(比如 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'))

我不确定这种操作的正确语法。谁能指出我正确的方向?

4

1 回答 1

2

而不是从两个子选择中进行选择,您应该使用您要使用的任何逻辑从两个表的连接中进行选择:

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'
于 2015-08-27T21:20:21.260 回答