SQL - 复制相同 table 但具有不同外键 ID 的行

SQL - Copying rows of the same table but with different foreign key ID

我有三个 table 是相互关联的:

Table #1 : 主要

ID_MAIN  NAME_MAIN  ID_VER
1        XYZ        1.0
2        PQR        1.0
3        ABC        1.0

SUBMAIN:列 ID_SUBMAIN(身份),NAME_SUBMAIN,ID_MAIN(带 MAIN 的外键),ID_VER (带 MAIN 的外键)

ID_SUBMAIN   NAME_SUBMAIN   ID_MAIN   ID_VER
1            X              1         1.0
2            Y              1         1.0
3            Z              1         1.0
4            A              2         1.0

Table#3最后

列 ID_LAST(身份),ID_SUBMAIN(带有 SUBMAIN 的外键)

ID_LAST   ID_SUBMAIN
1         1
2         1
3         1
4         2
5         4

现在每当我用 ID_MAIN 作为 1 和 ID_VER 作为 2.0 创建一个新的 MAIN 行时,我想用新的 ID_MAIN 和 LAST 复制 SUBMAIN 的所有关联记录使用新的 ID_SUBMAIN.

MAIN 中的新记录

ID_MAIN  NAME_MAIN  ID-VER
1        XYZ        2.0

我正在使用插入查询复制 ID_MAIN = 1

的所有 SUBMAIN 记录

我的查询是这样的:

INSERT INTO SUBMAIN(NAME_SUBMAIN, ID_MAIN, ID_VER) 
   SELECT 
       NAME_SUBMAIN, ID_MAIN, '2.0' 
   WHERE 
       ID_MAIN = 1

SOBMAIN 的新记录将是:

ID_SUBMAIN   NAME_SUBMAIN   ID_MAIN   ID_VER
5            X              1         2.0
6            Y              1         2.0
7            Z              1         2.0

现在我想复制 LAST table 的所有记录,其中 ID_SUBMAIN 是 1,2 和 3。将 ID_SUBMAIN 替换为新的 ID_SUBMAIN 5,6和 7.

LAST 中的新记录应如下所示:

ID_LAST   ID_SUBMAIN
6         5
7         5
8         5
9         6

我被困在这里,因为我不知道该如何实现?

您正在寻找的 sql 脚本如下所示:

INSERT INTO LAST(ID_SUBDOMAIN)
SELECT Sub2.ID_SUBDOMAIN
FROM SUBMAIN AS SUB1
    INNER JOIN LAST ON LAST.ID_SUBMAIN = SUB1.ID_SUBMAIN
    INNER JOIN SUBMAIN AS SUB2 ON SUB2.NAME = SUB1.NAME
        AND SUB2.ID_VER = '2.0'

这样,在第一个连接中,您将获得已在 "LAST" table 中引用的子干线,而在下一个内部连接中,您将获得具有相同名称和新内容的新子干线版本