Bạn muốn sử dụng một CASE
biểu thức của một số loại.
Trong SQL Server, mã sẽ như thế này:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M'
ELSE gender END
Chỉnh sửa: Như đã nêu trong các nhận xét (và một số câu trả lời khác), ELSE không cần thiết nếu bạn đặt mệnh đề WHERE trên câu lệnh.
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
WHEN gender = 'W' THEN 'M' END
WHERE gender IN ('M','W')
Điều này tránh những cập nhật không cần thiết. Điều quan trọng trong cả hai trường hợp là hãy nhớ rằng có các tùy chọn khác ngoài M & W (ví dụ NULL) và bạn không muốn đưa thông tin sai. Ví dụ:
UPDATE TableName
SET gender = CASE WHEN gender = 'M' THEN 'W'
ELSE 'M' END
Điều này sẽ thay thế bất kỳ NULL nào (hoặc các giới tính có thể khác) thành 'M' sẽ không chính xác.
Một vài lựa chọn khác sẽ là
/*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' );
Và ngắn gọn hơn
/*For SQL Server 2012+*/
UPDATE TableName
SET gender = IIF(gender = 'M', 'W', 'M')
WHERE gender IN ( 'M', 'W' );