记录的更新状态:一个记录处于活动状态,其他所有记录都处于非活动状态

问题描述

|| 我在db表中有一个
enum(\'Y\',\'N\')
字段,其中许多记录保持记录active(
Y
)或inactive(
N
)的状态。 一次只能激活一个记录。如果该接口处于活动状态,则提供一个界面来显示所有记录及其状态,如果该接口处于非活动状态,则会显示单词“ 3”,并提供一个提交按钮以使其对每个记录都处于活动状态。 现在我正在处理两个更新命令
update table_name set active=\"Y\" where id=$id
update table_name set active=\"N\" where id != $id
我的问题是: 真的需要两个更新命令来执行还是它们需要任何更新命令来一次更新?     

解决方法

你可以做
 UPDATE table_name
    SET active = 
        CASE WHEN id = $id THEN \"Y\"
             ELSE \"N\"
        END
不过请确认语法-我实际上并没有尝试过该代码。     ,
UPDATE  table_name
SET     active = IF(id = $id,\'Y\',\'N\')
WHERE   (id = $id) OR (active = \'Y\')
这将使用
id
active
上的索引。