项目:交换工资表里的男女生性别(难度:简单)
创建一个 salary表,如下所示,有m=男性 和 f=女性的值 。
例如:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
-- 创建表并插入数据
-- 创建表 CREATE TABLE salary ( id int(11) NOT NULL, name varchar(20) NOT NULL, sex varchar(6) NOT NULL, salary int(10) DEFAULT NULL, PRIMARY KEY (`id`)); -- 插入数据 INSERT INTO salary VALUES (\'1\', \'A\', \'f\', \'2500\'); INSERT INTO salary VALUES (\'2\', \'B\', \'m\', \'1500\'); INSERT INTO salary VALUES (\'3\', \'C\', \'f\', \'5500\'); INSERT INTO salary VALUES (\'4\', \'D\', \'m\', \'500\');
-- 交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求使用一个更新查询,并且没有中间临时表。
运行你所编写的查询语句之后,将会得到以下表:
| id | name | sex | salary |
|----|------|-----|--------|
| 1 | A | m | 2500 |
| 2 | B | f | 1500 |
| 3 | C | m | 5500 |
| 4 | D | f | 500 |
方法1:
UPDATE salary SET sex = if (sex = \'f\',\'m\',\'f\'); SELECT * from salary;
方法2:
UPDATE salary SET sex = CASE WHEN sex=\'f\' THEN \'m\' ELSE \'f\' END; SELECT * from salary;