mysql - case 表达式来更改列的值

标签 mysql sql

我有两列:measurement_unitmeasurement_sizemeasurement_unit 列中的值为 ml,gm,litre >.并且measurement_size的值为200,1300,2000我已将measurement_size的所有值转换为整数,例如.2 ,1.3,2 现在我想将 measurement_unit 的值更改为 literkg,这是我的案例表达式。但是它不起作用..我应该做什么?此外,它不是更新查询,我正在为我的报告执行此操作..它不会更改数据库中的任何值..

 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/

相关文章:

mysql - SQL查找id-s,其中列的值等于特定行上的值

php - 阻止用户在其用户名中注册空格

python - SQLAlchemy 说 "Table already exists"虽然它没有

MYSQL 5.5 删除主键

SQL 日期查询

mysql - SQL:其中 Field OR Field2 LIKE %entry%

mysql - 如何在某个字段中选择与另一行具有相同值的行(而不选择另一行)

mysql - mysql中的类型问题

sql - EXEC sp_executesql - 从存储过程调用中捕获 RETURN 值和 OUTPUT 值

mysql - 我对两个表的更新查询不起作用 (MYSQL)