给定一个表,该表代表分层树结构并具有三列
我知道该分支的最低节点,因此我想将其复制到具有相同数量的父节点的新分支中,该父节点也需要克隆。
我正在尝试编写单个SQL INSERT INTO语句,该语句将使同一主行的每一行的副本是将一个GroupID的一部分复制到新的GroupID中。
起始表示例:
ID | ParentGroupID | SomeValue
------------------------
1 | -1 | a
2 | 1 | b
3 | 2 | c
运行简单的INSERT INTO语句后的目标:
ID | ParentGroupID | SomeValue
------------------------
1 | -1 | a
2 | 1 | b
3 | 2 | c
4 | -1 | a-cloned
5 | 4 | b-cloned
6 | 5 | c-cloned
最终树形结构
+--a (1)
| +--b (2)
| +--c (3)
|
+--a-cloned (4)
| +--b-cloned (5)
| +--c-cloned (6)
这些演示数据显示时,ID并不总是很好地隔开,因此对于具有父级的行,我不能始终假定Parent的ID比当前ID小1。
另外,我正在尝试在T-SQL中进行此操作(对于Microsoft SQL Server 2005及更高版本)。
这听起来像是一个经典的练习,应该有一个纯SQL的答案,但是我已经习惯了编程,以至于我在关系型SQL中没有想到。
根据Quassnoi的文章“邻接列表与嵌套集:SQL
Server
”中的查询进行尝试:
WITH q AS
(
SELECT h.*, 1 AS level
FROM Table1 h
WHERE id = 3
UNION ALL
SELECT hp.*, level + 1
FROM q
JOIN Table1 hp
ON hp.id = q.ParentGroupID
), q2 AS (
SELECT
ID,
ParentGroupID,
SomeValue,
(SELECT MAX(level) FROM q) - level AS level
FROM q
)
INSERT INTO table1
SELECT
(SELECT MAX(ID) FROM Table1) + level + 1 AS ID,
CASE WHEN level = 0 THEN -1
ELSE (SELECT MAX(ID) FROM Table1) + level
END AS ParentGroupID,
SomeValue + '-cloned'
FROM q2
在测试数据上运行时的结果:
ID ParentGroupID SomeValue
1 -1 a
2 1 b
3 2 c
4 -1 a-cloned
5 4 b-cloned
6 5 c-cloned
主要内容:示例在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用 CREATE TABLE 命令创建一张新表,然后使用 SELECT 命令从旧表中选取所有数据,并使用 INSERT 命令插入到新表中。但是这种做法可能达不到您的目的,因为副本必须包含相同的索引、约束、默认值等。 如果您使用 MySQL 数据库,可以借助 SHOW CREATE TABLE 命令,该命令用来展
假设您是其中一位团队成员,把现有的远程数据库克隆到另一个目录( tutorial2 )。 Windows 请双击桌面上的任意地方,然后从右击菜单中选择“Git克隆”。 点击“Clone Repository" 按钮,再输入要克隆的远程数据库的URL和要保存的本地数据库的目录,然后点击“确定”。 这样就把上一页面中创建的数据库,以“tutorial2”的名称进行了克隆。 克隆将在以下画面开始进行。完
如果远程数据库中有他人的修改记录,那么把它完整地复制下来您就可以接着进行工作了。 克隆 进行克隆(Clone)操作就可以复制远程数据库。 执行克隆后,远程数据库的全部内容都会被下载。之后您在另一台机器的本地数据库上进行操作。 Note 克隆后的本地数据库的变更履历也会被复制,所以可以像原始的数据库一样进行查看记录或其他操作。
问题内容: 我正在使用带有SQL数据库的C#开发应用程序。 我有一个模型: 我想将其表示为表格。 表格的哪些正确字段? 问题答案: 这取决于该人与他将负责的其他人之间存在什么样的关系。 如果是父母与子女的关系,即 组成 关系,则可以使用自我参考表。就像是: 包含以下各列: , 。 相同表的外键。 如果一个人与其他人之间的关系是一个 集合 ,并且一个人可能对其他许多事情负责: , 。 : , , 。
Windows 首先,在之前克隆的数据库目录里的sample.txt 添加以下黑体字,并提交。 连猴子都懂的Git命令add 把变更录入到索引中 用tutorial2进行的操作 我们可以看到本地数据库分支的历史记录已更新,并位于远程数据库分支的前面。 用tutorial2进行的操作 接着,让我们推送新提交到远程数据库。请右击目录"tutorial2"并选择“推送”。 用tutorial2进行的操作
本文向大家介绍如何在MySQL中克隆表的结构?,包括了如何在MySQL中克隆表的结构?的使用技巧和注意事项,需要的朋友参考一下 要在MySQL中克隆,请使用LIKE子句。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 输出结果 这将产生以下输出- 以下是在MySQL中克隆表结构的查询- 让我们检查新创建的表的结构- 输出结果 这将产生以下输出-