3

我有一个这样的数据集:

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会将数据分成两个部分,我想根据不同的参数对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

注意:我们需要它在 MySQL 4.1.11 中工作。=D

4

1 回答 1

9

请注意,可以根据需要将其中的多个部分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
于 2012-09-21T19:59:47.997 回答