第一个表列(A到G)已经填充了每一行/记录的数据,但是H到K列中还没有数据。因此,我必须为这些列添加数据,对于表中的每一行(1到285,无论数字是多少)。列A到G应保持不变!
使用什么SQL查询将数据插入到现有的但空的记录中?除了H到K之外,没有覆盖任何列?
,我在寻找这样做的东西:
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行:
(`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`),发布于 2021-10-15 16:55:46
您可以将查询编写为一些update语句,如:
UPDATE t SET h = .., i = .. WHERE id = 1
UPDATE t SET h = .., i = .. WHERE id = 2如果所有列都得到相同的值,或者它们的块得到相同的值,则可以调整WHERE子句或省略它。
如果您需要MySQL的帮助来生成一个update语句块,请记住它们在一天结束时只是字符串,所以您总是可以这样做:
SELECT CONCAT('update t set h = .., i = .. where id = ', id) FROM t它将在表中的每一行生成一个update语句,并将ID连接到每个..您可以从结果网格中复制它们,将它们粘贴到查询编辑器中,调整它们并运行。当我想要对模式进行大量的更新语句时,我经常使用这种技术,但随后定制了一些
--
还可以从另一个表进行更新。看这个答案:mysql update column with value from another table
发布于 2021-10-15 17:11:27
您可以轻松地将查询更改为插入。在重复的密钥更新中.如下:
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上创建一个复合唯一键。
此查询将插入不存在的行或更新存在键(如主键或其他唯一键)的行。
https://stackoverflow.com/questions/69587852
复制相似问题