如何将列表复制到另一个表

时间:2014-02-20 10:37:53

标签: sql sql-server sql-server-2008

我有一个表CLIENT

CLIENT_ID   NAME      CP       VILLE
1           razer     49004    St hallo
2           mayui     49005    Kubol

和另一张表AGENCE

CLIENT_ID  AGENCE_ID  ADDR   CP      VILLE     
1           1          qsdf   null    null
2           2          qsdf   null    null
1           9          dqsf   5454    5254
1           5           fff   4587    6568

如何填写表格AGENCE的CP和VILLE?

当然我可以删除/截断AGENCE并使用SELECT INSERT。但我不能这样做。

3 个答案:

答案 0 :(得分:2)

所以,你的一种方法是:

UPDATE A
  SET A.CP = C.CP, A.VILLE = C.VILLE;
  FROM AGENCE A
  LEFT JOIN CLIENT C ON A.CLIENT_ID = C.CLIENT_ID

更好地实现真正想要的东西,就是从AGENCE表中删除列,只需在需要时进行连接

SELECT AGENCE.AGENCE_ID, AGENCE.CLIENT_ID, CLIENT.CP, CLIENT.VILLE
  FROM AGENCE
  LEFT JOIN CLIENT ON AGENCE.CLIENT_ID = CLIENT.CLIENT_ID;

确保您有正确的外键设置。

为什么AGENCE_ID不是你示例中的第一列?它看起来像一把钥匙。

答案 1 :(得分:0)

对于MSSQL,它将是:

UPDATE a
 SET VILLE = c.VILLE, CP = c.CP
FROM CLIENT c
INNER JOIN AGENCE a ON c.CLIENT_ID=a.CLIENT_ID

答案 2 :(得分:0)

我只是更新@compuchip的答案

UPDATE A
  SET A.CP = C.CP, A.VILLE = C.VILLE;
  FROM AGENCE A
  LEFT JOIN CLIENT C ON 
 A.CLIENT_ID = C.CLIENT_ID
AND
 A.AGENCE_ID = C.CLIENT_ID