根据其他2个表

时间:2015-07-08 06:04:03

标签: sql postgresql

我需要根据其他表中的数据将值插入表的列中。 示例数据:

   Table ccdocs

    ID   index    reference     Location_id

    1    001       ABCD            
    2    001A      EFGH           
    3    002       NULL             
    4    003       NULL         



   Table: cclvig

   index   reference    Location

    001      ABCD       VMC     
    001A     EFGH       VMC_TOP    
    002      NULL       ICF      
    003      NULL       VMC


   Table : doc_location

  loc_id          Lctn

   1            VMC
   2            VMC_TOP
   3            ICF

ccdocs的所有记录都是从cclvig通过查询复制的。现在我必须根据cclvig列" location"的值将位置ID插入到ccdocs中。表doc_location具有位置标识。我尝试使用select语句更新查询..但它返回多个值..请帮助..

2 个答案:

答案 0 :(得分:1)

UPDATE ccdocs d
SET location_id = loc.loc_id
FROM doc_location loc
JOIN cclvig c ON c.location = loc.lctn
WHERE d.index = c.index;

UPDATE中,您可以指定查询从何处获取新值。此查询对于常规SELECT语句(对允许的子句有限制)是绝对的,但不是实际的SELECT column list,而是UPDATE table SET column =短语。

答案 1 :(得分:0)

尝试以下查询

update ccdocs set Location_id=loc.loc_id

 from(
  select a.index,b.loc_id from  cclvig a inner join  doc_location on 
  a.Location=b.Lctn
 )loc
on ccdocs.index=loc.index