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 听起来这正是我回答的代码所做的......你所需要的只是在选择之前添加一个“插入以上是关于SQL克隆/复制同一表中的记录与条件的主要内容,如果未能解决你的问题,请参考以下文章