如果满足其他字段的值,则在完整表中设置字段值

时间:2015-09-12 00:47:18

标签: mysql sql sql-update

我有一个奇怪的问题。

在我的数据库中,我有一个包含348个条目的表。有没有办法只在符合特定标准的情况下更改特定值?如果显示为0,则将更改激活为否。

+---+--------+------+
|id |display |active|
+-------------------|
|1  |18      |yes   |
|2  |28      |yes   |
|3  |0       |yes   |
+---+--------+------+

+---+--------+------+
|id |display |active|
+-------------------|
|1  |18      |yes   |
|2  |28      |yes   |
|3  |0       |no    |
+---+--------+------+

将列中的活动全部更改为是或否我可以处理,但在这里我不知道是否可以,或者我必须手动检查每个值。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

这听起来像一个简单的更新声明:

update your_table set active = 'no' where display = 0;

如果您想根据active的值有条件地更新display的值,那么您可以像这样使用案例表达式:

update your_table set active = case when display = 0 then 'no' else 'yes' end;

或使用MySQL IF语句:

update your_table set active = if(display = 0, 'no', 'yes');

请注意,最后两个语句对所有行都有效,因此如果您只需更新子集,则应使用where子句。