就是一个判断问题,没想通怎么写,大大们帮个忙!这是我用case预想的,但是没成功!
SELECT name, level, tip FROM user case when WHERE level >0 then ORDER BY level else ORDER BY tip end DESC LIMIT 0 , 30就是从表里取出来name level 和tip
如果LVEVL大于0,那么久按照level排序
如果level小于等于零,那么久按照tip排序怎么写。
SELECT name, level, tip FROM user case when WHERE level >0 then ORDER BY level else ORDER BY tip end DESC LIMIT 0 , 30就是从表里取出来name level 和tip
如果LVEVL大于0,那么久按照level排序
如果level小于等于零,那么久按照tip排序怎么写。
SELECT name, level, tip, (if(level>0, level, tip)) s FROM user order by s
还是有问题的,比如如下表,是按照你的方式操作的结果name level tip s
AAA 3 0 3
DDD 1 2 2
FFF 2 0 2
GGG 2 0 2
HHH 2 0 2
JJJ 2 0 2
KKK 1 0 1
LLL 1 0 1 按我想法是,tip大于零的时候,按照tip排序,所以DDD应该在第一个上
而tip小于等于零的时候再用level排序,好像不是你写的这样
如果level小于等于零,那么久按照tip排序
===========================
按我想法是,tip大于零的时候,按照tip排序,所以DDD应该在第一个上
而tip小于等于零的时候再用level排序
描述不清..混乱..给出各种情况的数据例子比较好
TIP大于零的时候,按照TIP排序 TIP小于零的时候 按照LEVEL的大小排序name level tip
AAA 3 3
DDD 5 2
FFF 2 1
GGG 6 0
KKK 1 4
LLL 3 0 比如如上例子,tip大于零,先排TIP ,然后按照LEVEL排序
001 kkk
002 AAA
003 DDD
004 FFF
005 GGG
006 LLL谢谢大家
可能是我两次用了不同的举例...意思就是
TIP大于零的时候,按照TIP排序 TIP小于零的时候 按照LEVEL的大小排序name level tip
AAA 3 3
DDD 5 2
FFF 2 1
GGG 6 0
KKK 1 4
LLL 3 0 比如如上例子,tip大于零,先排TIP ,然后按照LEVEL排序
001 kkk
002 AAA
003 DDD
004 FFF
005 GGG
006 LLL谢谢大家
order by tip>0 desc ,case(tip>0, tip, level) desc
order by tip>0 desc ,if(tip>0, tip, level) desc