MySQL order by子句

时间:2016-02-04 05:31:23

标签: mysql

SELECT * FROM CUSTOMERS
    ORDER BY (CASE ADDRESS
    WHEN 'DELHI'     THEN 1
    WHEN 'BHOPAL'    THEN 2
    WHEN 'KOTA'      THEN 3
    WHEN 'AHMADABAD' THEN 4
    WHEN 'MP'   THEN 5
    ELSE 100 END) ASC, ADDRESS DESC;

这100意味着什么?

2 个答案:

答案 0 :(得分:0)

100是在没有address案例匹配时将使用的值。

答案 1 :(得分:0)

所有(CASE ADDRESS WHEN 'DELHI' THEN 1 WHEN 'BHOPAL' THEN 2 WHEN 'KOTA' THEN 3 WHEN 'AHMADABAD' THEN 4 WHEN 'MP' THEN 5 ELSE 100 END)用于按地址返回的订单列表,其逻辑是:

  1. 首先去地址 - DELPHI(得到值1)
  2. second - BHOPAL(获得价值2)
  3. 第三名 - KOTA(获得价值3)
  4. 第四名 - AHMADABAD(获得价值4)
  5. 第五名 - MP(获得价值5)
  6. 然后其他一切(获得价值100)
  7. 然后所有这些列表都按照ASC

    编号排序

    为什么100?只是数字大于5(去列表末尾的那些地址),如果它是6,50或1000就没有区别,它只需要大于5