MySQL:更新同一列下多行的值

时间:2016-07-01 02:30:40

标签: mysql sql

所以我有这个表,其中有名为AMEX和CashOnly的列。它们都有1或0的值。现在,我想要将所有'1'值更改为'YES'而将所有'0'值更改为'NO',而不是1和0。所以它会更多观众可以理解。

我可以使用哪种最有效的SQL查询来完成此任务?

4 个答案:

答案 0 :(得分:1)

使用单个UPDATE声明:

UPDATE yourTable
SET AMEX     = CASE WHEN AMEX = '0'     THEN 'NO' ELSE 'YES' END,
    CashOnly = CASE WHEN CashOnly = '0' THEN 'NO' ELSE 'YES' END

请注意,这假设您已将AMEXCashOnly列转换为VARCHAR。另请注意,没有WHERE子句,因为您要更新表中的所有记录。

答案 1 :(得分:0)

只需使用case声明:

select (case when AMEX = 1 then 'YES' else 'NO' end) as AMEX,
       (case when cash = 1 then 'YES' else 'NO' end) as cash
. . .

答案 2 :(得分:0)

如果要更改列类型,则需要执行以下操作:(因为int字段不能将yes / no存储为值)

创建2个额外的枚举字段,将它们命名为您现在想要的任何内容。让他们成为amex1和cash1。将其值声明为“是”,“否”将默认值设置为“否”。

现在逐个执行以下2个查询。

UPDATE table_name SET amex1 = 'yes' WHERE amex = 1;
UPDATE table_name SET cash1 = 'yes' WHERE cash = 1;

现在删除现金和美国运通列分别将cash1和amex1重命名为cash和amex。希望这可以帮助你。

答案 3 :(得分:0)

试试这个:

update table set amex=(case when AMEX = 1 then 'YES' else 'NO' end) ,
CashOnly=(case when CashOnly= 1 then 'YES' else 'NO' end);

OR

update table set amex='Yes' where amex=1;
update table set amex='No' where amex=0;
update table set CashOnly='Yes' where CashOnly=1;
update table set CashOnly='No' where CashOnly=0;