我在网站上有一个mySQL数据库表。它有几千行数据。我刚刚添加了一个列,需要为row_id 1500到5000添加数据到此列。我正在考虑这样做 -
UPDATE `TableName` SET `Col_New` = 'abc' WHERE `id` = '1500'
并重复此操作直到 -
UPDATE `TableName` SET `Col_New` = 'xyz' WHERE `id` = '5000'
这是否有效还是有更好的更快的方式吗? “我是新手,因此会感激点头或任何建议。
答案 0 :(得分:3)
您可以使用BETWEEN
,如下所示:
UPDATE `TableName` SET `Col_New` = 'abc' WHERE `id` BETWEEN '1500' and '5000';
如果每行的Col_New
值不同,那么您应该使用循环。
答案 1 :(得分:0)
将更新查询放入一个交易中
BEGIN;
UPDATE `TableName` SET `Col_New` = 'abc' WHERE `id` = '1500';
-- and so on
UPDATE `TableName` SET `Col_New` = 'xyz' WHERE `id` = '5000';
COMMIT;
它会快得多。仅限交易引擎 - innoDb。
答案 2 :(得分:0)
最有效,可扩展的方式可能是:
将您的数据存入数据库中的表格
使用MySQL load data infile执行此操作。
从该表中更新
UPDATE `tableName`
INNER JOIN `sourceValues` ON
`tableName.id` = `sourceValues.id`
SET `tableName`.`Col_New` = `sourceValues`.`Col_New`
请注意,我还没有包含where
子句,因为我假设sourceValues表只包含您要更新的值。但是,如果需要,您可以添加:
where `tableName.id` between 1500 and 5000
如果您只是将其作为快速入侵,那么插入每行的宏可能是最简单的方法。但是如果这是一项你会做很多的操作,我会推荐这样的东西,特别是如果你可能希望将来有更多的价值。