SQL - 在另一个带有更新的身份种子的插入中插入查询

标签 sql sql-server sql-server-2005 t-sql

我有 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/

相关文章:

python - PyODBC 执行存储过程未完成

sql - 查找链接服务器上的列依赖项

php - 解析错误: syntax error, unexpected ',' not seeing the issue [duplicate]

如果没有找到最接近的最小值,Mysql : find nearest Maximum value,

sql-server - 在 Sql STUFF 命令中将最后一项的逗号分隔符替换为 "and"

c# - 如何在C#中同时检索存储过程的结果值和select语句?

sql - 使用 SQL 存储过程创建 Excel

sql - 如何显示除第一个表格行之外的所有内容?

sql - 总和列以显示每一行的总数

android - 将 SQL Server 查询更改为 SQLite 中的等效查询