gpt4 book ai didi

sql : duplicate row and all related rows

转载 作者:行者123 更新时间:2023-12-04 23:43:40 25 4
gpt4 key购买 nike

我有以下 3 个相关表

Schools           Departments          Classes
--------------- ------------------ -----------------
ID ID ID
School_Name ID_Schools ID_Departments
Department_Name Class_Name

和一些关于它们包含的内容的样本(我会尽可能地画出来)
---- Schools ---
ID School_Name
----------------
1 School_1 <----------------------\
2 School_2 |
n ........ |
|
---- Departments ---------------- |
ID ID_Schools Department_Name |
--------------------------------- |
1 1 Dept_1 <-----------/ -->--\
2 1 Dept_2 <-----------/ -->--|------\
3 2 Dept_1 | |
n .. ...... | |
| |
---- Classes ------------------- | |
ID ID_Departments Class_Name | |
-------------------------------- | |
1 1 Class_1 <-------------/ |
2 1 Class_2 <-------------/ |
3 1 Class_3 <-------------/ |
4 2 Class_1 <--------------------/
n .. .......

所有 ID 都是自动递增的

我正在寻找一种复制“School_1”层次结构的方法。问题是我如何保持新行之间的关系?

例如,要复制“School_1”层次结构,我将在 Schools 表中插入一个新的原始数据,最终会生成一个新 ID(例如 5)。
---- Schools ---
ID School_Name
----------------
5 School_1

属于“School_1”的部门“Dept_1”和“Dept_2”将获得新的 ID
---- Departments ----------------
ID ID_Schools Department_Name
---------------------------------
16 5 Dept_1
17 5 Dept_2

并且类(class)也将获得新的 ID
---- Classes -------------------
ID ID_Departments Class_Name
--------------------------------
56 16 Class_1
57 16 Class_2
58 16 Class_3
59 17 Class_1

我怎样才能以一种简单而聪明的方式实现这一目标?

最佳答案

我建议使用 SQL INSERT AS SELECT魔法,就像这里描述的那样:Insert into ... values ( SELECT ... FROM ... ) .

让您的旧学校 ID 为 7,您的新学校 ID 为 17,然后您可以为每个表创建一个查询为 INSERT INTO Departments(id, id_schools, name) VALUES (NULL, 17, (SELECT name FROM Departments WHERE id_schools = 17)) .

当您需要插入 Classes - by - Departments(具有多个部门)时会有点棘手,但您可以手动填写 WHERE id_departments IN (5,6,13, etc)或将其自动化为 WHERE id_departments IN (SELECT id FROM Departments WHERE School_ID = 17)
P.S.:这更像是建议而不是答案,因此 SQL 方言或代码质量等一些细节可能不合适,但我对方法本身很确定。

关于sql : duplicate row and all related rows,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24932631/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com