SQL将属性移动到另一个表

时间:2013-11-29 05:47:34

标签: sql database oracle11g

有2张桌子。人和帐户。存在1:n依赖关系(通过ID),因此一个人可以拥有n个帐户。该人有一个电子邮件地址。更改应该是,电子邮件地址将是帐户表中的属性。 所以我为该帐户创建了一个新的属性电子邮件。

如何将此人的所有电子邮件地址值移动或复制到该帐户,如果某人有2个帐户,该电子邮件地址是否已复制或移至这两个帐户?

3 个答案:

答案 0 :(得分:0)

首先,没有必要做这样的复制任务。 维持主键和键盘总是更好。表中的外键。

如果你想要复制,请尝试这样的事情。

SELECT TMP.EMAIL INTO ACCOUNT AS 'A' FROM 
(SELECT P.EMAIL FROM PERSON AS 'P') AS TMP
WHERE A.ID = P.ID

希望,这就是你想要的。

答案 1 :(得分:0)

以这种方式试试

UPDATE account a
   SET email = 
(
  SELECT email 
    FROM person
   WHERE person_id = a.person_id
)
 WHERE EXISTS
(
  SELECT * 
    FROM person
   WHERE person_id = a.person_id
);

这是 SQLFiddle 演示

答案 2 :(得分:0)

感谢我的工作如下:

UPDATE (SELECT * FROM PERSON p JOIN ACCOUNT a ON a.ID=p.ID) t SET t.PRIMARYEMAIL = t.EMAIL WHERE t.EMAIL IS NOT NULL