数据库
首页 > 数据库> > MySQL分段订购

MySQL分段订购

作者:互联网

我有这样的数据集:

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

按布尔列排序会将数据分成两个部分,我想根据每个不同的参数排序:boolean = 1的那些按值排序,其余按名称排序,如下所示:

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

注意:我们需要在MySQL 4.1.11中使用它. = d

解决方法:

请注意,可以根据需要“激活”按顺序执行多个部分.
你可以查看这个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

标签:sql,mysql,sql-order-by,mysql4
来源: https://codeday.me/bug/20190723/1511733.html