Sql 当联接在两个字段上时,如何联接表?

Sql 当联接在两个字段上时,如何联接表?,sql,postgresql,Sql,Postgresql,我有两张桌子: A (productid partid) B (productid partid) 我想将A和B中出现的所有行插入表C(productid partid)。然后从B中删除这些行 例如: A productid partid 1 100 1 101 2 200 3 300 B productid partid 1 100 2 200 4

我有两张桌子:

A  (productid  partid)

B  (productid  partid)
我想将
A
B
中出现的所有行插入表
C(productid partid)
。然后从
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
productid  partid
  4         400
  4         401
B
将是:

productid  partid
  1         100
  2         200
productid  partid
  4         400
  4         401
我想做的是:

Insert into C (productid,partid) (select productid,partid from A join B on ???? )
我的问题是我不知道如何连接多个列上的表?
我不知道如何在同一个查询中同时执行插入和删除操作?

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

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

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

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

要插入到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中的记录,所以您必须在delete语句中给出这些记录。

要插入到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中的记录,所以您必须在delete语句中给出这一点。

在同一个查询中,是否可以从B中删除插入到C中的所有行?@java我不知道在同一个查询中执行此操作的方法。我将运行一个单独的
DELETE
查询,并从B中删除在CHow中具有匹配记录的记录。您这样做了吗?我不知道如何在DELETE上设置WHERE。是否可以在同一个查询中从B中删除插入到C的所有行?@java我不知道在同一个查询中如何执行此操作。我将运行一个单独的
DELETE
查询,并从B中删除在CHow中具有匹配记录的记录。您这样做了吗?我不知道如何设置删除的位置。