1.先抛出问题
如下是一个表结构和数据,写按要求写sql,填充Resolution列的数据
| Width | Height | Resolution |
1 | 768 | 1024 |
|
2 | 1080 | 1920 |
|
3 | 720 | 1280 |
|
4 | 1440 | 2560 |
|
5 | 1152 | 1920 |
|
6 | 768 | 1024 |
|
规则:
1、720x1280 => 720p
2、1080x1920 => 1k
3、1440x2560 => 2k
4、其它写为 Width x Height ps: 768x1024
2.分析
遇到这样的问题首先要想到是要根据每一行不同的Width字段和Height字段对Resolution字段赋值,那就要考虑用CASE WHEN THEN来实现了,针对不同条件进行相应的赋值。
3.上sql
假定是TEST表,那么sql语句如下所示:
UPDATE TEST
SET RESOLUTION =
CASE WHEN WIDTH = 720 AND HEIGHT = 1280 THEN '720p'
WHEN WIDTH = 1080 AND HEIGHT = 1920 THEN '1k'
WHEN WIDTH = 1440 AND HEIGHT = 2560 THEN '2k'
ELSE CONCAT (CONCAT(WIDTH, 'x'), HEIGHT)
END