【问题标题】:Order by in MySQL [closed]在MySQL中订购[关闭]
【发布时间】:2013-04-05 12:17:40
【问题描述】:

我有一个像这样的表格邮政编码

  Code      State    Region        Distance
  25696      1       5             150
  25692      1       4             60 
  25691      2       3             50
  25690      2       2             233
  25688      3       4             450
  25686      3       5             560
  25685      4       7             50 
  12069      4       8             30
  12068      4       5             60
  12067      6       3             80
  12066      7       1             90

现在我想对这些数据进行排序,例如如果选择了状态 4,则首先按状态 4 区域排序,然后按距离排序,然后是其余的,无论区域如何,按距离排序。

所以结果应该是这样的

  Code      State    Region        Distance
  12068      4       5             60
  25685      4       7             50 
  12069      4       8             30
  25691      2       3             50
  25692      1       4             60
  12067      6       3             80
  12066      7       1             90 
  25696      1       5             150
  25690      2       2             233
  25690      2       2             233
  25686      3       5             560

首先按升序排列 4 个地区,然后按距离排序的休息日期,无论地区、州如何。

我正在尝试以下查询

    SELECT region,br.state, case when state = 4 then -1
                          else state end as StateOrder,

  FROM zipcode 
  ORDER BY StateOrder,region, Distance asc; 

此查询首先按排序顺序给出状态 4 区域,但其余数据也按状态和区域排序,这需要修复。

请提出建议。

【问题讨论】:

  • ORDER BY FIELD(region,4) [DESC] ,distance; ?
  • 抱歉没有得到这个..
  • 你能根据你的样本发布你想要的结果吗?
  • 编辑了我的问题,请立即查看

标签: mysql sql-order-by


【解决方案1】:
SELECT * 
  FROM zipcode 
 ORDER  
    BY FIELD(state,4) DESC
     , CASE WHEN state=4 THEN region END
     , distance;

【讨论】:

  • 这工作非常好......谢谢......
【解决方案2】:

您可以在ORDER BY 中使用CASE 表达式:

select code, state, region, distance
from zipcode
order by 
  case when state = 4 then region else distance end

SQL Fiddle with Demo

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 1970-01-01
    相关资源
    最近更新 更多