【问题标题】:Insert same row multiple times within SQL table based on unique value in field 1根据字段 1 中的唯一值在 SQL 表中多次插入同一行
【发布时间】:2013-05-15 21:36:47
【问题描述】:

我目前有一个表,其中第 1 列是其余列的唯一标识符,我需要为每个唯一标识符在表中插入一个新值。示例如下:

第 1 栏 第 2 栏 第 3 栏
10 地址真
10 城市错误
10 状态真
20 地址真
20城真
20 状态真

我需要根据第 1 列中的每个唯一标识符插入一个新行,如下所示:

第 1 栏 第 2 栏 第 3 栏
10 地址真
10 城市错误
10 状态真
*10 新新*
20 地址真
20城真
20 状态真
*20 新新*

由于某种原因,用于快速查找和插入的 SQL 脚本在星期一早上让我忽略了。任何帮助将不胜感激。

谢谢!

【问题讨论】:

  • Column 1 在此处不是唯一。

标签: sql


【解决方案1】:
insert into table-name
(Column1, Column2, Column3)
select Column1, 'NEW', 'NEW*' from table-name group by Column1

您也可以在子选择中使用 distinct,但我已经开始切换到 group by,如果我想将查询更改为 count 或其他内容,这会更灵活。

【讨论】:

  • 谢谢@Marlin Pierce、Aarolama Bluenk 和 AshReva。我正在尝试混合使用这些建议。我很抱歉在这种情况下使用“独特”。我认为自己充其量只是一个普通的 SQL 用户,所以仍在学习。这时候,我试过 INSERT INTO table-name VALUES (X, Y, Z) WHERE Column 1 = Random Value。该代码的问题显然是我必须对第 1 列的每个值都这样做(我试图避免的事情)。我希望 Marlin 的建议能够快速查找以解决该问题。
  • 再次感谢您。所以我认为我缺少的是快速查找以根据第 1 列中的每个新值将行多次插入表中。我相信我在第 1 列中有超过 1,000 个“唯一”值需要这个额外的行添加到它。有什么想法吗?
  • “选择 Column1, 'NEW', 'NEW*' from table-name group by Column1” 不能准确地给你想要插入的内容吗?如果是这样,我的答案应该有效。
  • 嗨@Marlin Pierce。完美地工作。谢谢!
【解决方案2】:

您可以尝试 Marlin Pierce 建议的变体:

INSERT INTO [table-name]
([Column 1], [Column 2], [Column 3])
SELECT [Column 1], 'NEW', 'NEW*' from [table-name] where [Column 2] = 'Address' group by [Column 1];

这将为您现有的每一行创建一个新行。

有关可执行示例,请参阅SqlFiddle

【讨论】:

  • 再次感谢您。所以我认为我缺少的是快速查找以根据第 1 列中的每个新值将行多次插入表中。我相信我在第 1 列中有超过 1,000 个“唯一”值需要这个额外的行添加到它。有什么想法吗?
猜你喜欢
  • 2020-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-17
  • 2014-08-16
  • 2019-05-26
  • 1970-01-01
  • 2013-10-08
相关资源
最近更新 更多