MySQL中如何为class表不同Roll Number对应行批量插入Subject列数据
你可以通过以下两种方案实现MySQL class表的Subject字段按Roll Number规则批量更新:
方案一:逐行更新(适合规则数量少的场景)
语法简单易懂,不易出错:
-- 更新Roll Number为1的行科目为数学(原英文Maths) UPDATE class SET Subject = 'Maths' WHERE `Roll Number` = 1; -- 更新Roll Number为2的行科目为生物学(原英文Biology) UPDATE class SET Subject = 'Biology' WHERE `Roll Number` = 2; -- 更新Roll Number为4的行科目为计算机(原英文Computers) UPDATE class SET Subject = 'Computers' WHERE `Roll Number` = 4; -- 更新Roll Number为5的行科目为音乐(原英文Music) UPDATE class SET Subject = 'Music' WHERE `Roll Number` = 5;
注意:字段名
Roll Number包含空格,必须用反引号包裹,否则会触发MySQL语法错误。如果需要插入中文科目,直接替换语句中单引号内的英文即可。
方案二:批量更新(适合规则多、数据量大的场景)
仅需一次表扫描即可完成所有更新,执行效率更高:
UPDATE class SET Subject = CASE `Roll Number` WHEN 1 THEN 'Maths' WHEN 2 THEN 'Biology' WHEN 4 THEN 'Computers' WHEN 5 THEN 'Music' ELSE Subject -- 不匹配规则的行保留原有值 END WHERE `Roll Number` IN (1,2,4,5); -- 仅更新需要修改的行,降低性能消耗
操作建议
执行UPDATE前建议先运行以下查询验证匹配结果,确认无误后再执行更新,避免误改数据:
SELECT Name, `Roll Number`, CASE `Roll Number` WHEN 1 THEN 'Maths' WHEN 2 THEN 'Biology' WHEN 4 THEN 'Computers' WHEN 5 THEN 'Music' ELSE '无匹配规则' END AS 待更新的科目内容 FROM class WHERE `Roll Number` IN (1,2,4,5);
内容的提问来源于stack exchange,提问作者Amrit
相关产品推荐
相关产品推荐

