我有 2 张 table T1 和 T2
T1 有 10 strip 有主键(身份种子)的唯一记录
T2 对于 T1 中的每条记录都有多个带有外键的整体
T1 有 2 列:主键 - 数据
T2 有 2 列:PrimaryKey - FoeignKey(此 FK 是 T1 的主键)
我需要编写一个查询,该查询将选择 T1 中的所有记录并将新条目插入自身,即 T1 ,具有相同的数据,并且由于 T1 上的 PK 是身份种子,因此一旦生成此新 ID 后,我需要加入 T2 并使用此新身份插入新的相关记录。
我知道这会重复数据,但这不是问题,这是一次性事务,因此查询不需要高效,但请不要使用游标,最好使用 SELECT 和 INSERTS 来实现这一点,而无需使用使用外部变量进行循环!
谢谢!!
更新:如果 T1 中有一个条目并不总是表明表 T2 中必须有一个相应的条目。
附注我使用 SQL Server 2005
最佳答案
假设 T2 上的主键也是 IDENTITY,请使用:
-- Populate T1
INSERT INTO T1
SELECT data
FROM T1
-- Populate T2 with T1 values
INSERT INTO T2
SELECT primary_key
FROM T1 x
WHERE EXISTS(SELECT NULL
FROM T2 y
JOIN T1 z ON z.primary_key = y.foreign_key
WHERE z.data = x.data
AND z.primary_key != x.primary_key)
关于SQL - 在另一个带有更新的身份种子的插入中插入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3887466/