且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

MySQL根据同一列中的值更新同一列上的多行

更新时间:2022-03-14 21:50:55

您可能不仅应基于value的值,而且还应基于key的值来更新值,否则可以将'​​m'更新为密钥为衬衫大小"时为男性".

You should probably update the values based not only on the value of value but on the value of key, otherwise you could update 'm' to 'male' when key is 'shirt-size'.

UPDATE `DemoGroup` 
SET `value` = CASE 
    WHEN (`key`, `value`) = ('gender', 'm') THEN 'male'
    WHEN (`key`, `value`) = ('gender', 'f') THEN 'female'
    WHEN (`key`, `value`) = ('age', '10')   THEN '10-19'
    WHEN (`key`, `value`) = ('age', '80')   THEN '80-89'
    ELSE `value` -- no-op for other values
  END 
WHERE `key` IN ('gender','age');