MySQL更新值:如何分离1&查询

时间:2016-07-28 05:27:41

标签: mysql

我的数据库中有这个列,包含1,-1或0.现在我想将所有1的值更改为" YES",将所有0更改为" NO&#34 ;和所有-1到#34; PROBED"。我实际上知道该怎么做但问题是MySQL没有正确识别-1和1s所以基本上-1和1都改为" YES"在我第一次尝试使用不同的查询时。现在我想出了一个新的。

update test

SET AMEX = CASE WHEN AMEX = '1' THEN 'YES' END,
        AMEX CASE WHEN AMEX = '-1' THEN 'PROBED' END,
        AMEX = CASE WHEN AMEX = '0' THEN 'NO' END

我正在考虑使用此查询,但最终可能会将所有1和-1转换为YES并且我不想冒险,因为我不知道所有-1条目且数据库是非常大。

2 个答案:

答案 0 :(得分:1)

只需修复语法错误:

update test
SET AMEX = CASE WHEN AMEX = '1' THEN 'YES'
                WHEN AMEX = '-1' THEN 'PROBED'
                WHEN AMEX = '0' THEN 'NO' END;

答案 1 :(得分:1)

如果AMEX确实是varchar列,那么您的猜测并不遥远,例如使用方法:

UPDATE test
SET AMEX = CASE WHEN AMEX = '1'  THEN 'YES'
                WHEN AMEX = '0'  THEN 'NO'
                WHEN AMEX = '-1' THEN 'PROBED' END
WHERE AMEX IN ('1', '0', '-1')

我添加了一个WHERE子句,它将确保UPDATE仅发生在AMEX值为1,0或-1的记录上,以防万一你那里有其他类型的数据。