我有两列:measurement_unit
和 measurement_size
。measurement_unit
列中的值为 ml,gm,litre
>.并且measurement_size
的值为200,1300,2000
我已将measurement_size
的所有值转换为整数,例如.2 ,1.3,2
现在我想将 measurement_unit
的值更改为 liter
或 kg
,这是我的案例表达式。但是它不起作用..我应该做什么?此外,它不是更新查询,我正在为我的报告执行此操作..它不会更改数据库中的任何值..
CASE WHEN MUC.name='ml' THEN (MUC.name)='Liter'
WHEN MUC.name='gm' THEN (MUC.name)='Kg'
END AS Measurement,
最佳答案
一种可能是在 UPDATE
语句中使用 CASE WHEN
:
UPDATE MUC
SET MUC.name = CASE
WHEN MUC.name = 'ml' THEN 'Liter';
WHEN MUC.name = 'gm' THEN 'Kg';
ELSE MUC.name
END
我对这个解决方案唯一不喜欢的是它仍然会使用当前值更新不匹配的行。如果您确实只想更新要转换的行,那么您可以尝试使用两个包含在事务中的 UPDATE
语句:
START TRANSACTION
UPDATE MUC
SET MUC.name = 'Liter' WHERE MUC.name = 'ml'
UPDATE MUC
SET MUC.name = 'Kg' WHERE MUC.name = 'gm'
COMMIT
如果您想确保没有人看到您的设备处于中间状态,则可能需要进行该事务。
关于mysql - case 表达式来更改列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37154335/