当连接在2个字段上时如何连接表?

时间:2016-01-05 05:25:07

标签: sql postgresql

我有两张桌子:

A  (productid  partid)

B  (productid  partid)

我想向表C (productid partid)中插入AB中显示的所有行。然后从B删除这些行。

例如:

A
productid  partid
  1         100
  1         101
  2         200
  3         300

B
productid  partid
  1         100
  2         200
  4         400
  4         401

您可以假设每对(productid,partid)在每个表格中都不会出现多次。

=====查询运行后====

C将是:

productid  partid
  1         100
  2         200

B将是:

productid  partid
  4         400
  4         401

我试图做的是:

Insert into C (productid,partid) (select productid,partid from A join B on ???? )

我的问题是我不知道如何在多个列上连接表? 我不知道如何在同一个查询中插入和删除?

2 个答案:

答案 0 :(得分:2)

您只需使用两个表中所需的列,并将其与AND运算符一起使用:

Insert into C (productid,partid) 
select A.productid, A.partid 
from A join B on A.productid = B.productid AND A.partid = B.partid

答案 1 :(得分:1)

要插入C,上面使用的查询是正确的 -

Insert into C (productid,partid) 
select A.productid, A.partid 
from A join B on A.productid = B.productid AND A.partid = B.partid

要从B中删除,您可以使用以下查询 -

Delete B from B
join C
on C.productid = B.productid 
AND C.partid = B.partid

由于您必须删除B中的记录,因此您必须在删除语句中提供该记录。