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中具有匹配记录的记录。您这样做了吗?我不知道如何设置删除的位置。