2011-04-15 42 views
2

我在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 

我的問題是: -

真的做我需要兩個update命令執行或者是它們的任何更新命令更新一次呢?

回答

2

你可以做

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

確認的語法雖然 - 我並沒有真正嘗試的代碼。

+0

很棒的工作很酷 – Daric 2011-04-15 11:53:59

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

這將使用idactive索引。

+0

工作很棒.. – Daric 2011-04-15 11:55:26