在 MySQL 的表中,我尝试根据 id 更新特定字段。
该表有超过 5,000 行和许多字段。其中一个字段是“id”,我要更新的另一个字段称为“category”,现在所有字段都是 NULL,我想更新所有字段他们。
我想使用的备份mysql文件只有“id”
和“category”
,它们是这样的:
INSERT INTO `products` (`id`, `category`) VALUES
(3, 1),
(4, 1),
(5, 2),
(6, 1),
(7, 5),
(8, 1),
(9, 6),
(10, 1),
...
(5000, 3);
我想根据此列表中的 ID 更新表中的“类别”字段,并且因为有超过 5,000 行,所以我不想手动更改每条记录。
现在在我的表中,所有“类别”字段都是 NULL,我想使用我拥有的文件更新“类别”字段或为“类别”字段提供新信息。
最佳答案
最简单的是使用临时表:
CREATE TEMPORARY TABLE temp_products (id int, category int ) ;
然后
INSERT INTO `temp_products` (`id`, `category`) VALUES
(3, 1),
(4, 1),
(5, 2),
(6, 1),
(7, 5),
(8, 1),
(9, 6),
(10, 1),
...
(5000, 3);
现在您只需使用带有内部联接的更新:
Update products p
INNER JOIN temp_products t_p ON t_p.id = p.id
SET p.category = t_p.category
如果您愿意,可以添加 where 子句:
Update products p
INNER JOIN temp_products t_p ON t_p.id = p.id
SET p.category = t_p.category
WHERE p.category IS NULL
关于MySQL根据id更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54929509/