2015-11-06 37 views
0

欲两个表之间的数据进行比较,如果表的designation值A存在于表乙,我插入的idproduit值中的idproduit对应表B的该指定表A中这样的:比较两个表并插入值的PostgreSQL]

table A       |  table B 
--------------------------------- |--------------------------- 
designation|idproduit|date  | | designation |idproduit | 
--------------------------------| |------------------------------ 
des 1  |0  |12/12/2015| |des1   |5 
des 2  |0  |14/06/2015| |de2   |6 
des3  |0  |20/10/2015| | 

我想表B中的idproduit副本值表A时designation是一样的,我这样做,但它不工作 PS:我为我难过英文i “M法国

Insert into calcul(idproduit) 
(Select idproduit 
     from calcul MT 
     where exists (select designation 
          from produit OT 
          where OT.designation = MT.designation 
         ) 
) 

回答

0

这不是很清楚,但根据您的描述,我想,你真的需要UPDATETableA.idproduct其值从TableB.idproduct其中designation列匹配两个表。

所以您的查询可能是以下几点:

UPDATE table_a a 
SET idproduct = b.idproduct 
FROM table_b b 
WHERE a.designation = b.designation; 

样品DDL:

CREATE TABLE table_a (
    designation TEXT, 
    idproduct INTEGER, 
    date DATE 
); 

CREATE TABLE table_b (
    designation TEXT, 
    idproduct INTEGER 
); 

INSERT INTO table_a VALUES 
    ('des1',0,'2015-12-12'::DATE), 
    ('des2',0,'2015-06-14'::DATE), 
    ('des3',0,'2015-10-20'::DATE); 

INSERT INTO table_b VALUES 
    ('des1',5), 
    ('des2',6); 
+0

你undrstand我的问题,我有问题,你的要求,B这不是rognizeded – khadi8

+0

我更新的答案示例数据@ khadi8 –

+0

非常感谢您 – khadi8