我有这样的表格
-----------------------
id | name | is_default|
------------------------
1 | a | 1 |
2 | a | 0 |
3 | a | 0 |
4 | a | 0 |
-----------------------
现在,我想将第2行(ID = 2(将IS_DEFAULT更改为1,然后同时将INERIAN LINE(ID = 1(ID_DEFAULT更改为0,例如UI中列表中的"选择默认"选项。1.我可以在一个SQL语句中这样做吗?2.如果有可能,如何编写SQL语句或如何在mybatis mapper.xml?
中写入带有mybatis的Springboot,sql语句在mapper.xml
中写入@Data
pulbic class Option{
private Integer id;
private String name;
private Boolean isDefault;
}
如何编写mybatis或mysql语句?
您可以使用CASE
表达式:
UPDATE yourTable
SET is_default = CASE WHEN id = 1 THEN 0 ELSE 1 END
WHERE id IN (1, 2);
或,如果您只打算切换id
1和2的默认值,请尝试:
UPDATE yourTable
SET is_default = CASE WHEN is_default = 1 THEN 0 ELSE 1 END
WHERE id IN (1, 2);
蒂姆的答案很好。如果值仅为0/1,则可以将其简化为:
UPDATE t
SET is_default = 1 - is_default
WHERE id IN (1, 2);