谢谢大家的回复 CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END--------------是我想要的结果 CASE WHEN OPT_ID = 12 THEN 4 ELSE 1 END--------------是错误的结果 这是为什么? 或者大家推荐一下这方面的帖子。 谢谢!!!
CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END 意思是把OPT_ID=12的列单独列出来,对于单独里出来的OPT_ID=12的列应放在结果集的位置就有1或者4来决定,对于本例,1<4,那么就是把IPT_ID=12的结果靠前排列,其他结果在后,当然1或者4都可以用其他值代替,不是不可变的,只需要OPT_ID=12设定的值小于其他情况设定的值即可。
明白了,谢谢大家!!! 这样更好理解!!! SELECT *,( CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END) as temp FROM kc_sale_order WHERE SALE_ORDER_STATE IN ('10','15','20','25','40','50','55') ORDER BY temp,CREATE_TIME DESC;
1和4分别是什么意思呢?
等价于
if (OPT_ID == 12)
OPT_ID = 1
else
OPT_ID =4
所以这里的数据按你这个sql来说你写 1,2或者-1,0 或者1,1000 都是这个一样的效果 只是用来排序
CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END--------------是我想要的结果
CASE WHEN OPT_ID = 12 THEN 4 ELSE 1 END--------------是错误的结果
这是为什么?
或者大家推荐一下这方面的帖子。
谢谢!!!
意思是把OPT_ID=12的列单独列出来,对于单独里出来的OPT_ID=12的列应放在结果集的位置就有1或者4来决定,对于本例,1<4,那么就是把IPT_ID=12的结果靠前排列,其他结果在后,当然1或者4都可以用其他值代替,不是不可变的,只需要OPT_ID=12设定的值小于其他情况设定的值即可。
这样更好理解!!!
SELECT *,( CASE WHEN OPT_ID = 12 THEN 1 ELSE 4 END) as temp FROM kc_sale_order WHERE SALE_ORDER_STATE IN ('10','15','20','25','40','50','55') ORDER BY temp,CREATE_TIME DESC;