如何替换Student表Marks列指定值?当前SQL代码未实现需求
正确修改Student表Marks列指定数值的SQL方法
原代码的问题很明确:你把CASE语句的逻辑用在了Roll_num列上,完全没对Marks列做处理,自然达不到修改Marks的效果。根据需求分两种场景给出解决方案:
场景1:仅查询时临时替换(不修改原表数据)
如果只是想在查询结果里替换Marks的指定数值,不改动数据库原始数据,把CASE语句作用在Marks列上即可:
SELECT Name, -- 对Marks列应用替换逻辑 CASE WHEN Marks = '65' THEN '你要替换的目标值1' -- 替换成实际需要的数值 WHEN Marks = '68' THEN '你要替换的目标值2' WHEN Marks = '71' THEN '你要替换的目标值3' ELSE Marks -- 其他数值保持不变 END AS Marks, Roll_num FROM student;
场景2:永久修改表中的Marks数据
如果需要直接修改数据库表内的Marks值,使用UPDATE语句:
UPDATE student SET Marks = CASE WHEN Marks = '65' THEN '你要替换的目标值1' WHEN Marks = '68' THEN '你要替换的目标值2' WHEN Marks = '71' THEN '你要替换的目标值3' ELSE Marks END -- 加上WHERE条件只更新需要修改的行,避免不必要的全表操作 WHERE Marks IN ('65', '68', '71');
注意:如果Marks是数值类型(而非字符串),去掉数值两侧的单引号,比如写WHEN Marks = 65而非'65'。
内容的提问来源于stack exchange,提问作者Venkatesh Y
相关产品推荐
相关产品推荐

