SQL克隆/复制同一表中的记录与条件

Posted

技术标签:

【中文标题】SQL克隆/复制同一表中的记录与条件【英文标题】:SQL clone/replicate records within same table with a condition 【发布时间】:2018-08-27 16:36:23 【问题描述】:

我有一张表,我想在同一张表中复制/克隆记录。但是我想有条件地做到这一点。条件是我有一个名为 recordcount 的列,其中包含数值。例如,第 1 行可以采用记录计数的值,比如 7,那么我希望我的第 1 行被复制 7 次。第 2 行可以取一个值,比如 9,然后我希望第 2 行被复制 9 次。 任何帮助表示赞赏。谢谢

【问题讨论】:

欢迎来到 Stack Overflow。提出问题时,正确使用标签很重要。您在此处标记了 mysql 和 SQL Server,这是 2 个完全不同的 RDBMS。我已经删除了这些标签,因为不清楚您使用的是哪个(因此不会引起其他志愿者的混淆)。但是,重要的是您edit 您的问题并添加正确的标签和(最重要的是)only 正确的标签。谢谢。 给我们你的表结构 您好,欢迎来到 SO。我建议你真的不想在你的表中有一堆重复的行。这违背了关系数据的概念。您还需要确定您使用的是 mysql 还是 sql server。 但如果你真的认为你想要一堆重复的,那么做到这一点的方法是使用一个计数表或数字表。确切的实现将取决于您的 DBMS。这是一篇很棒的文章,它从 sql server 的角度讨论了这个概念。 sqlservercentral.com/articles/T-SQL/62867 谢谢拉努。我正在使用 sql 服务器。我这样做是为了执行一些我需要复制的统计分析。 Madhur 就表格结构而言,我现在的表格中有 30 列。如果这很容易,我真的不必在同一个表中复制。我可以创建一个新表。 【参考方案1】:

你能做什么(我很确定这不是最佳做法),

是保存一个只有数字的表,它的行数对应于数值。

将它与您的桌子连接起来,并仅投影您的桌子。

例子:

create table nums(x int);
insert into nums select 1;
insert into nums select 2;
insert into nums select 2;
insert into nums select 3;
insert into nums select 3;
insert into nums select 3;

create table t (txt varchar(10) , recordcount int);
insert into t select 'A',1;
insert into t select 'B',2;
insert into t select 'C',3;


select t.*
from t 
    inner join nums
        on t.recordcount = nums.x
order by 1
;

将项目:

"A",1
"B",2
"B",2
"C",3
"C",3
"C",3

【讨论】:

在您的帖子中编辑此内容并对其进行格式化,以便清楚,我(可能还有其他任何想要帮助的人)无法理解它 让示例保持简单。可以说我有 3 列。我的表中的 ID、记录计数和年龄。我想创建一个包含复制行的新表。按记录计数为每个 ID。因此,如果 ID = 1 的记录数 = 7。那么我希望该记录在我的新表中复制 7 次。 @VenkatR 听起来这正是我回答的代码所做的......你所需要的只是在选择之前添加一个“插入 看看这里***.com/questions/8560619/…

以上是关于SQL克隆/复制同一表中的记录与条件的主要内容,如果未能解决你的问题,请参考以下文章

SQL UPDATE(从一行复制到另一行)

Netezza SQL 比较同一表中的两条记录

从 SQL Server 中的每个表中只复制一条记录

SQL语句把同一个表中的a字段中的数据复制到另一个字段b中

如何 SQL 为另一个表中的每个 id 插入一条记录? [复制]

如何将现有表中的 7000 条记录中的前 1000 条记录复制到其他新表中