首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL将数据大容量插入空(但现有)记录中

使用SQL将数据大容量插入空(但现有)记录中
EN

Stack Overflow用户
提问于 2021-10-15 16:26:33
回答 2查看 222关注 0票数 0

第一个表列(A到G)已经填充了每一行/记录的数据,但是H到K列中还没有数据。因此,我必须为这些列添加数据,对于表中的每一行(1到285,无论数字是多少)。列A到G应保持不变!

使用什么SQL查询将数据插入到现有的但空的记录中?除了H到K之外,没有覆盖任何列?

,我在寻找这样做的东西:

代码语言:javascript
复制
INSERT INTO `table` (`record_id`, `colA`, `colB`, `colC`, `colD`, `colE`, `colF`, `colG`, `colH`, `colI`, `colJ`, `colK`)

VALUES
    (`auto-increment 1`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
    (`auto-increment 2`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
    (`auto-increment 3`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),

一直到第285行:

代码语言:javascript
复制
    (`auto-increment 285`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-10-15 16:55:46

您可以将查询编写为一些update语句,如:

代码语言:javascript
复制
UPDATE t SET h = .., i = .. WHERE id = 1
UPDATE t SET h = .., i = .. WHERE id = 2

如果所有列都得到相同的值,或者它们的块得到相同的值,则可以调整WHERE子句或省略它。

如果您需要MySQL的帮助来生成一个update语句块,请记住它们在一天结束时只是字符串,所以您总是可以这样做:

代码语言:javascript
复制
SELECT CONCAT('update t set h = .., i = .. where id = ', id) FROM t

它将在表中的每一行生成一个update语句,并将ID连接到每个..您可以从结果网格中复制它们,将它们粘贴到查询编辑器中,调整它们并运行。当我想要对模式进行大量的更新语句时,我经常使用这种技术,但随后定制了一些

--

还可以从另一个表进行更新。看这个答案:mysql update column with value from another table

票数 1
EN

Stack Overflow用户

发布于 2021-10-15 17:11:27

您可以轻松地将查询更改为插入。在重复的密钥更新中.如下:

代码语言:javascript
复制
INSERT INTO `table` (`record_id`, `colA`, `colB`, `colC`, `colD`, `colE`, `colF`, `colG`, `colH`, `colI`, `colJ`, `colK`)

VALUES
    (`auto-increment 1`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
    (`auto-increment 2`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`),
    (`auto-increment 3`, `dont-change A`, `dont-change B`, `dont-change C`, `dont-change D`, `dont-change E`, `dont-change F`, `dont-change G`, `new-value H`, `new-value I`, `new-value J`, `new-value K`)

ON DUPLICATE KEY UPDATE

colH=VALUES(colH),
colI=VALUES(colI),
colJ=VALUES(colJ),
colK=VALUES(colK);

注意:如果主键不相同,则必须在cols colH到colK上创建一个复合唯一键。

此查询将插入不存在的行或更新存在键(如主键或其他唯一键)的行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69587852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档