2014-02-20 17 views
0

我有一个客户表我怎么能列表复制到另一个表

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。但我不能那样做。

+0

您正在使用哪个数据库管理系统只更新@compuchip的答案吗? Postgres的?甲骨文?但你为什么要存储redudant(重复)信息呢?如果您在访问“agence”表时需要“cp”和“ville”值,则可以始终加入这两个表。 –

+2

您能不能简单地使用一个简单的'UPDATE'查询将'AGENCE'表连接到'CLIENT_ID'上的'CLIENT'表中? –

+0

更好的是,你能不能简单地使用一个简单的'JOIN'查询来链接你需要的信息?如果你复制数据,'mayui'移动到另一个村庄呢? – CompuChip

回答

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不是您的示例中的第一列顺便说一句?它看起来像一个主键。

+0

为什么主键列需要成为第一列? –

+0

它不,但我从来没有见过它不同。 – CompuChip

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 
0

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

错误...'AGENCE_ID = CLIENT_ID'?现在你真的迷失了我。我希望你有任何线索你在做什么:) – CompuChip

相关问题