Anda ingin menggunakan CASE
ekspresi dari beberapa tipe.
Dalam SQL Server kode akan terlihat seperti ini:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Sunting: Sebagaimana dinyatakan dalam komentar (dan beberapa jawaban lainnya) ELSE tidak perlu jika Anda menempatkan klausa WHERE pada pernyataan.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Ini menghindari pembaruan yang tidak perlu. Yang penting dalam kedua kasus ini adalah untuk mengingat bahwa ada opsi selain M&W (NULL misalnya) dan Anda tidak ingin memasukkan informasi yang salah. Sebagai contoh:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Ini akan menggantikan NULL (atau jenis kelamin lain yang mungkin) sebagai 'M' yang tidak benar.
Beberapa opsi lain bisa jadi
/*Simple form of CASE rather than Searched form*/
UPDATE TableName
SET gender = CASE gender
WHEN 'M' THEN 'W'
WHEN 'W' THEN 'M'
END
WHERE gender IN ( 'M', 'W' );
Dan yang lebih ringkas
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );