MySQL中 CASE WHEN THEN then后面跟常量是没问题的 如果改成字段就没值
答案:1 悬赏:40 手机版
解决时间 2021-02-19 00:29
- 提问者网友:末路
- 2021-02-18 02:20
MySQL中 CASE WHEN THEN then后面跟常量是没问题的 如果改成字段就没值
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-02-18 02:40
可以的吧,出NULL是不是因为你字段的内容就是NULL啊。
这里是一个测试,可以看到使用列名value来做then的值是可以的:
mysql> select * from aaa;
+------+-------+
| id | value |
+------+-------+
| 1 | 1 |
| 2 | 3 |
| 3 | 4 |
| 4 | 4 |
| 5 | 4 |
| 6 | 6 |
| 8 | 8 |
| 7 | 7 |
| 9 | 8 |
| 10 | 10 |
| 11 | 11 |
| 12 | 11 |
| 13 | 11 |
| 14 | 11 |
| 15 | 12 |
+------+-------+
15 rows in set (0.00 sec)
mysql> select id, value, case id when 1 then value when 2 then 2 * value when 3
then 'xxx' else 0 end as case_col
-> from aaa;
+------+-------+----------+
| id | value | case_col |
+------+-------+----------+
| 1 | 1 | 1 |
| 2 | 3 | 6 |
| 3 | 4 | xxx |
| 4 | 4 | 0 |
| 5 | 4 | 0 |
| 6 | 6 | 0 |
| 8 | 8 | 0 |
| 7 | 7 | 0 |
| 9 | 8 | 0 |
| 10 | 10 | 0 |
| 11 | 11 | 0 |
| 12 | 11 | 0 |
| 13 | 11 | 0 |
| 14 | 11 | 0 |
| 15 | 12 | 0 |
+------+-------+----------+
15 rows in set (0.00 sec)
这里是一个测试,可以看到使用列名value来做then的值是可以的:
mysql> select * from aaa;
+------+-------+
| id | value |
+------+-------+
| 1 | 1 |
| 2 | 3 |
| 3 | 4 |
| 4 | 4 |
| 5 | 4 |
| 6 | 6 |
| 8 | 8 |
| 7 | 7 |
| 9 | 8 |
| 10 | 10 |
| 11 | 11 |
| 12 | 11 |
| 13 | 11 |
| 14 | 11 |
| 15 | 12 |
+------+-------+
15 rows in set (0.00 sec)
mysql> select id, value, case id when 1 then value when 2 then 2 * value when 3
then 'xxx' else 0 end as case_col
-> from aaa;
+------+-------+----------+
| id | value | case_col |
+------+-------+----------+
| 1 | 1 | 1 |
| 2 | 3 | 6 |
| 3 | 4 | xxx |
| 4 | 4 | 0 |
| 5 | 4 | 0 |
| 6 | 6 | 0 |
| 8 | 8 | 0 |
| 7 | 7 | 0 |
| 9 | 8 | 0 |
| 10 | 10 | 0 |
| 11 | 11 | 0 |
| 12 | 11 | 0 |
| 13 | 11 | 0 |
| 14 | 11 | 0 |
| 15 | 12 | 0 |
+------+-------+----------+
15 rows in set (0.00 sec)
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯