在sql语句里case when then else end可以当做c语言中switch case一样是分支语句,起到不同条件处理作用。而as相当于一个别名,可以给某个列或者某个表起新的名字。
比如这里有个employee表,
select * from employee;
+----+--------+-----+---------+
| id | name | age | dept_id |
+----+--------+-----+---------+
| 1 | 张伟 | 30 | 1 |
| 2 | 刘红 | 20 | 3 |
| 3 | 刘明智 | 33 | 5 |
| 4 | 陈静 | 44 | 2 |
| 6 | 刘凤飞 | 59 | 4 |
| 7 | andy | 38 | 1 |
| 8 | baby | 38 | 6 |
| 11 | 李刚 | 48 | 3 |
| 14 | 小明 | 55 | 5 |
| 16 | 王晨键 | 35 | 6 |
+----+--------+-----+---------+
10 rows in set
select id as 编号,name as 姓名,case when age>50 then '该退休了' when age>30 then '大龄' else '年轻' end as 年龄 from employee;
+------+--------+----------+
| 编号 | 姓名 | 年龄 |
+------+--------+----------+
| 7 | andy | 大龄 |
| 8 | baby | 大龄 |
| 6 | 刘凤飞 | 该退休了 |
| 3 | 刘明智 | 大龄 |
| 2 | 刘红 | 年轻 |
| 14 | 小明 | 该退休了 |
| 1 | 张伟 | 年轻 |
| 11 | 李刚 | 大龄 |
| 16 | 王晨键 | 大龄 |
| 4 | 陈静 | 大龄 |
+------+--------+----------+
10 rows in set
看到了吧,这样就把表里id命名为编号,name命名为姓名,age命名为年龄,而age里根据不同的字段值,又分别赋值。
as还可以用到新表复制,比如:create table test as select * from table1
这时候就会create 一个table test,他是完全copy 表table1里的全部数据。