2011-12-06 87 views
6

我在我的mysql數據庫中有一個用戶表,裏面有id,年齡和性別等列。 我已經插入了大約500條記錄。mysql替換表中的值

現在我需要爲記錄交換性別,即用男性替換男性和女性。

我認爲做這種方式:

update users set gender='female' where gender='male'; 
update users set gender='male' where gender='female'; 

但你可以看到,當我運行一個查詢,所有的記錄都將被設置爲「女」性別更新。

我該如何修改查詢或者我應該換一種方式?

回答

11
update users set gender=case when gender='male' then 'female' else 'male' end where gender in ('male','female'); 
3

更新用戶設置gender ='tmp'其中gender ='male';

更新用戶設置gender ='male'where gender ='female';

更新用戶設置gender ='female'where gender ='tmp';

+0

這個答案更新表記錄多次,檢查出其他的人做一個去 – golimar

3

合併兩個查詢到一個: -

update users set gender = if (gender='female', 'male', 'female'); 
+1

假設,你有第三個性別,這可能會更新行,你不會被更新;) – rabudde

+1

是的,但你可以F或M(或有FM或MF?) – ajreal

+1

自然這應該是這樣;)但可以成爲'未定義'狀態(如果OP允許這種情況),當用戶不會提供關於他的性別的任何數據(即,字段性別可能爲空,您的聲明會操縱此字段)。但使用'IF'的+1 +1 – rabudde

3
update users set gender='fem' where gender='male'; 
update users set gender='male' where gender='female'; 
update users set gender='female' where gender='fem'; 
2
update users set gender='wasmale' where gender='male'; 
update users set gender='male' where gender='female'; 
update users set gender='female' where gender='wasmale'; 
+0

'wasmale'很有趣!哈哈哈 – 2011-12-06 13:31:56