【问题标题】:Select from a table and Insert new records into another table but change some values从表中选择并将新记录插入另一个表但更改一些值
【发布时间】:2011-10-23 02:38:56
【问题描述】:

我在两个表之间有一对多的关系...比如组织和成员

我想基于现有组织 (ID 111) 创建一个新组织并复制所有成员,但将它们与新创建的组织相关联。

一些伪代码..

-- Just create a new organisation based on the new name and address
-- passed to the proc.
Insert into Organisation (newOrganisationName, newAddress) 
returning Organisation_ID into v_orgID;

所以现在我在 v_orgID 中返回了新的组织 ID,例如 999,我想从现有组织中复制 ID 为 111 的成员,并将这些成员与新的 OrgID 相关联。

实现这一点的最佳方法是什么...我应该循环插入还是可以使用 Insert Into - 从方法中选择

INSERT INTO Members (OrganisationID, Membername, MemberAddress)
(SELECT  v_orgID, MemberName, MemberAddress FROM Member
 WHERE  OrganisationId = 111)

谢谢米克

【问题讨论】:

  • 插入/选择是最好的方法,会更快,使用更少的资源,也更简单。
  • 谢谢凯文...刚刚做到了,它奏效了...只是不确定是否可以替换变量,但决定吸一下看看:-)

标签: sql oracle select insert


【解决方案1】:

只需将 v_orgID 作为数字插入到查询中:

INSERT INTO ... (SELECT 999, MemberName, MemberAddress FROM Member WHERE  OrganisationId = 111)

999 作为新的 OrganizationId。

【讨论】:

  • 谢谢绅士们...现在都整理好了 :-)
【解决方案2】:

使用 INSERT/SELECT,改变值:

INSERT INTO Members (OrganisationID, Membername, MemberAddress)
SELECT  999, MemberName, MemberAddress FROM Member
 WHERE  OrganisationId = 111

【讨论】:

  • 对不起,只是为了澄清...我没有按照您的示例对 999 进行硬编码,而是使用了变量替换...如 INSERT INTO Members (OrganisationID, Membername, MemberAddress) (SELECT v_orgID , MemberName, MemberAddress FROM Member WHERE OrganisationId = 111) 问候 Mick
猜你喜欢
  • 1970-01-01
  • 2012-01-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2014-02-16
相关资源
最近更新 更多