คุณต้องการใช้การCASE
แสดงออกบางประเภท
ใน SQL Server รหัสจะเป็นดังนี้:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
แก้ไข: ตามที่ระบุไว้ในความคิดเห็น (และคำตอบอื่น ๆ ) ELSE ไม่จำเป็นถ้าคุณใส่คำสั่งย่อย WHERE บนคำสั่ง
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
เป็นการหลีกเลี่ยงการอัพเดตที่ไม่จำเป็น สิ่งสำคัญไม่ว่าในกรณีใดก็คือให้จำไว้ว่ามีตัวเลือกอื่นนอกเหนือจาก M & W (เช่น NULL) และคุณไม่ต้องการใส่ข้อมูลที่ผิด ตัวอย่างเช่น:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
สิ่งนี้จะแทนที่ NULL ใด ๆ (หรือเพศที่เป็นไปได้อื่น ๆ ) เป็น 'M' ซึ่งจะไม่ถูกต้อง
จะมีตัวเลือกอื่นสองสามอย่าง
/*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' );
และกระชับขึ้น
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );