比较两个表和插入值[postgresql]

时间:2015-11-06 16:40:55

标签: postgresql

我想比较两个表格之间的数据,如果表格B 中存在表格A designation值,我会插入idproduit的值在表A idproduit中对应表B的这个名称,如下所示:

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|   |

idproduit相同时我希望表A中表B中的designation的副本值,我这样做但是它不起作用 PS:我很抱歉,我的英语是法语

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

1 个答案:

答案 0 :(得分:0)

它不是很清楚,但根据您的描述,我认为,您确实需要更新 TableA.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);