題:給定一個工資表,如下所示,m=男性 和 f=女性 。交換所有的 f 和 m 值(例如,將所有 f 值更改為 m,反之亦然)。要求使用一個更新查詢,並且沒有中間臨時表。
例如:
| id | name | sex | salary | |----|------|-----|--------| | 1 | A | m | 2500 | | 2 | B | f | 1500 | | 3 | C | m | 5500 | | 4 | D | f | 500 |
運行你所編寫的查詢語句之后,將會得到以下表:
| id | name | sex | salary | |----|------|-----|--------| | 1 | A | f | 2500 | | 2 | B | m | 1500 | | 3 | C | f | 5500 | | 4 | D | m | 500 |
分析:
1、update更新操作
2、條件判斷
將要求流程語句表示:
IF sex='f' SET sex='m'
IF sex='m' SET sex='f'
IF語法介紹:
IF(expr1,expr2,expr3)
如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),則 IF()的返回值為expr2; 否則返回值則為 expr3。IF() 的返回值為數字值或字符串值,具體情況視其所在語境而定。
解答:
UPDATE salary SET sex=IF(sex='f','m','f');
理解:
如果sex='f',則 IF(sex='f','m','f')表達式的值為'm',
如果sex='m',則 IF(sex='f','m','f')表達式的值為'f',
然后更新相應的值