使用单个mysql查询更新我的现有列

时间:2017-11-22 13:41:54

标签: mysql sql

我有以下表数据。

--------------
|ID | status |
--------------
| 1 |   0    |  
| 2 |   1    |
| 3 |   1    |  
| 4 |   0    |      
| 5 |   1    |
| 6 |   0    |
| 7 |   1    |
| 8 |   1    |
| 9 |   0    |
--------------  

现在有一些技术原因我想更新我的表格数据记录0N1Y,所以任何人都知道如何处理在单个更新查询中。

预期结果:

--------------
|ID | status |
--------------
| 1 |   N    |  
| 2 |   Y    |
| 3 |   Y    |  
| 4 |   N    |      
| 5 |   Y    |
| 6 |   N    |
| 7 |   Y    |
| 8 |   Y    |
| 9 |   N    |
--------------  

先谢谢

3 个答案:

答案 0 :(得分:3)

假设status是一个字符串,您只需:

update t
    set status = (case when status = '0' then 'N' else 'Y' end)
    where status in ('0', '1');

如果status是数字,则首先需要更改其类型。

答案 1 :(得分:2)

如果您在状态字段中只有0和1,则可以使用以下查询。如果status字段的数据类型为INT,则将其更改为varchar。

update `order` SET status = CASE WHEN status = 0 THEN 'N' ELSE 'Y' END

答案 2 :(得分:1)

试试这个。

update 'tablename' set status= if(status=0,'N','Y') where status in('0','1');

确保您的字段类型为varchar for status