我的数据库中有这个列,包含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条目且数据库是非常大。
答案 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的记录上,以防万一你那里有其他类型的数据。