如何使用条件使用其他列的值更新列?

时间:2013-07-27 07:40:24

标签: mysql sql

我有一张包含以下方案的表格。

meta_id    meta_key    meta_value
1            key1         5
2            key2       sometext
3            key3       serialized_text
4            key4         8

由于性能原因,我已将第四列添加到我的表中作为meta_value列的“数字表示”。但我必须更新先前存在的数据。这就是我需要的方式。

meta_id    meta_key    meta_value           num_value
1            key1         5                     5
2            key2       sometext               NULL
3            key3       serialized_text        NULL
4            key4         8                     8

简而言之,只有当meta_value是一个数字时,我才需要查询来更新第四列。我知道如何根据另一列更新列。条件是我感兴趣的部分。
感谢

2 个答案:

答案 0 :(得分:1)

尝试

UPDATE Table1
   SET num_value = meta_value * 1 -- or just meta_value
 WHERE meta_value REGEXP '^[-]?[0-9]+$'

这是 SQLFiddle 演示

答案 1 :(得分:1)

只需:

UPDATE table 
    SET meta_value = null
WHERE meta_value not regexp '^[0-9]+$';

查看演示here