2011-12-06 15 views
6

私はmysqlデータベースにid、age、genderのようなカラムを持つusersテーブルを持っています。 私は約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' where gender = 'male';

ユーザーを更新します。gender = 'male'ここでgender = 'female';

ユーザーを更新します。gender = 'female'ここでgender = 'tmp';

+0

が複数回記録し、仮定 – golimar

3

1に2つのクエリを組み合わせる: - この答えはテーブルを更新

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

を行く1でそれを行うために他のものをチェックアウトし、あなた)更新する必要はありません; – rabudde

+1

はい、あなたはFまたはM(またはFMまたはMFがありますか?) – ajreal

+1

自然にこれはそうする必要があります;)しかし、可能性があります「未定義」状態(OPの場合)ユーザが自分の性別についてのデータを何も与えないとき(すなわち、このケースを許可する)。フィールドの性別は空になり、ステートメントはこのフィールドを操作します)。 IFを使用すると+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'は面白かった!!ははは –

関連する問題