vma*_*tto 3 mysql sql sql-order-by mysql4
我有这样的数据集:
boolean name value
0 Text10 20
1 Text1 8
0 Text4 46
1 Text9 84
1 Text5 66
0 Text2 35
0 Text9 2
1 Text6 55
Run Code Online (Sandbox Code Playgroud)
按boolean列排序会将数据拆分为两个部分,我想根据每个不同的参数boolean = 1进行排序:具有按值排序的部分,其余的按顺序排序name,如下所示:
boolean name value
1 Text1 8 # --> 1s are ordered by value
1 Text6 55
1 Text5 66
1 Text9 84
0 Text2 35 # --> 0s are ordered by name
0 Text4 46
0 Text9 2
0 Text10 20
Run Code Online (Sandbox Code Playgroud)
注意:我们需要在MySQL 4.1.11中使用它.= d
请注意,可以根据需要对其中的多个部分order by进行"激活".
你可以查看这个sqlfiddle
select * from yourtable
order by
boolean desc,
case when boolean = 0 then value else null end, -- ´else null´ is redundant
case when boolean = 1 then name else null end -- but is here to clarify
Run Code Online (Sandbox Code Playgroud)