在SQL Server

时间:2015-08-27 21:16:58

标签: sql-server sql-insert database-management

假设我有两个表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'))

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

1 个答案:

答案 0 :(得分: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'