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

时间:2011-04-15 11:34:24

标签: php mysql

我在db表中有一个enum('Y','N')字段,其中有许多记录保持记录活动状态(Y)或非活动状态(N)。

一次只能激活一条记录。如果它处于活动状态,则显示所有记录及其状态,然后显示单词Active,如果它处于非活动状态,则提供一个提交按钮以使其与每条记录一起激活。

现在我正在使用两个更新命令

update table_name set active="Y" where id=$id
update table_name set active="N" where id != $id

我的问题是: -

真的我需要两个更新命令来执行,还是他们的任何更新命令一次更新它们?

2 个答案:

答案 0 :(得分:3)

你可以做到

 UPDATE table_name
    SET active = 
        CASE WHEN id = $id THEN "Y"
             ELSE "N"
        END

确认语法 - 我实际上没有尝试过代码。

答案 1 :(得分:3)

UPDATE  table_name
SET     active = IF(id = $id, 'Y', 'N')
WHERE   (id = $id) OR (active = 'Y')

这将使用idactive上的索引。