如何使用SQL设置一个值并更改满足条件的所有其他值

时间:2018-08-28 16:07:47

标签: mysql sql database

我有一个可以添加帖子的系统。编辑帖子时,您可以选择将其另存为版本。这样一来,人们就可以检查较早版本的文本。

我正在尝试增加在页面上设置默认文本的可能性。

我数据库中的所有文本都有一个名为active的字段,当添加第一个文本时该字段为1,对于所创建的任何新版本,该字段为0。

在显示文本的页面上,始终显示active = 1的文本,因此我希望能够将文本设置为active,而将来自同一类别的所有其他文本设置为0或inactive。 / p>

通过这种方式,用户可以选择默认显示哪个版本。

我该怎么做?

我的数据库布局:

enter image description here

您会看到有一个名为parent_id的行,我只想更改带有该ID的所有其他值。

例如,假设我要将id 4设置为1,那么id 1和5都必须为0。在这种情况下,仅parent_id 73将受到影响。

如何使用SQL执行此操作?我已经看到了一些使用CASE的示例,但这是另一种DB语言。

1 个答案:

答案 0 :(得分:1)

在set子句中时可能会使用

update  my_table 
set active = (case when id  = 4 then 1 else  0  end) 
where parent_id = 73