从2个不同的表中插入语句

时间:2013-07-02 09:27:48

标签: mysql sql-server sql-server-2008 tsql

我有一个childTable和parentTable,而familyTable是我新创建的表 我试图做什么来链接子和父表唯一ID

我的预期结果如下表

FamilyTable

   -------------
FamilyID | ParentID, ChildID
------------
1       |  1   | 1
2       |  2   | 2

但我没有这样做,下面是我目前的数据库设计

**当前数据库设计**

ChildTable

-------------
ChildID | ChildNm
------------
1       |  A
2       |  B

ParentTable

   -------------
ParentID| ParentNm
------------
1       |  A
2       |  B

FamilyTable

   -------------
FamilyID | ParentID, ChildID
------------
1       |  
2       |  
下面的

是我的插入声明

INSERT INTO FamilyTable (ParentID,ChildID)
SELECT p.ParentID, c.ChildID
FROM ParentTable p, ChildTable c
WHERE NOT EXISTS (SELECT 1 FROM FamilyTable where parentsID=p.parentID and childID=c.childID)

此查询的实际结果

FamilyTable

   -------------
FamilyID | ParentID, ChildID
------------
1       |  1  |  1
2       |  2  |  1
3       |  1  |  2
4       |  2  |  2

这不是我想要的结果,是否有任何身体可以给我一些想法?

1 个答案:

答案 0 :(得分:0)

假设你在parentnm / childnm上匹配它们(否则你只需要一个交叉连接,为你提供所有可能的组合,这是你现在拥有的)

INSERT INTO FamilyTable (ParentID,ChildID)
SELECT p.ParentID, c.ChildID
FROM ParentTable p
INNER JOIN ChildTable c
ON p.ParentN, = c.ChildNm
LEFT OUTER JOIN FamilyTable f
ON f.parentsID = p.parentID AND f.childID=c.childID
WHERE f.parentsID IS NULL