select 学历( case 高中 then 1 case 大学 then 2 case 研究生 then 3 ) xx order by xx.asc 这个思路
from xx表 忘记写了哈
2楼答案很正确,如果case用的不熟,可以单独添加一个学历表,用外键引入,不过性能肯定不如2楼
这个学历是不是应该做个master表啊,然后做个order字段就行了。 我觉得应该这样。
两种方式: 1。学历不应该写死成汉字,应该用一个参照表,比如1代表小学,2代表初中,等等,你的表里面只需要存1,2,3,4之类的,这样就好order by了。 2。如果已经写死了不想改表结构,那么可以采用case when then的方式,该语法是标准sql。 比如:select case 学历 when '小学' then 1 WHEN '初中' THEN 2 WHEN '高中' THEN 3 END as 学历 from tbl order by 学历 desc/asc。。 或者特定的函数,例如oracle的decode来做处理。推荐第一种。比如某时候,你想把初中改成初级中学,就不用改数据表,只要改参照表即可。
select t.userid,t.login_id, case DUTY_LEVEL_CODE when 1382 then 100 when 1383 then 200 when 1380 then 300 when 1422 then 400 when 1423 then 500 when 1420 then 600 when 1421 then 700 when 1381 then 800 else 900 end from uum_user t我执行这段查询语句后出来三列 t.userid t.login_id DUTY_LEVEL_CODEwhen1382. 我现在想给DUTY_LEVEL_CODEwhen1382.这个列起个别名怎么起啊?
end 后面加别名即可。 你把整个这一段看成一个字段,对字段加别名会吧?
mysql> select * from tablea; +------+------+ | id | name | +------+------+ | 1 | a | +------+------+ 1 row in set (0.02 sec)mysql> select case name when 'a' then 'A' end as haha from tablea; +------+ | haha | +------+ | A | +------+ 1 row in set (0.00 sec)
case 大学 then 2
case 研究生 then 3
) xx order by xx.asc
这个思路
我觉得应该这样。
1。学历不应该写死成汉字,应该用一个参照表,比如1代表小学,2代表初中,等等,你的表里面只需要存1,2,3,4之类的,这样就好order by了。
2。如果已经写死了不想改表结构,那么可以采用case when then的方式,该语法是标准sql。
比如:select case 学历 when '小学' then 1 WHEN '初中' THEN 2 WHEN '高中' THEN 3 END as 学历 from tbl order by 学历 desc/asc。。
或者特定的函数,例如oracle的decode来做处理。推荐第一种。比如某时候,你想把初中改成初级中学,就不用改数据表,只要改参照表即可。
case DUTY_LEVEL_CODE
when 1382 then 100
when 1383 then 200
when 1380 then 300
when 1422 then 400
when 1423 then 500
when 1420 then 600
when 1421 then 700
when 1381 then 800
else 900
end
from uum_user t我执行这段查询语句后出来三列
t.userid t.login_id DUTY_LEVEL_CODEwhen1382.
我现在想给DUTY_LEVEL_CODEwhen1382.这个列起个别名怎么起啊?
你把整个这一段看成一个字段,对字段加别名会吧?
mysql> select * from tablea;
+------+------+
| id | name |
+------+------+
| 1 | a |
+------+------+
1 row in set (0.02 sec)mysql> select case name when 'a' then 'A' end as haha from tablea;
+------+
| haha |
+------+
| A |
+------+
1 row in set (0.00 sec)