MYSQL按2个变量排序

时间:2015-09-02 11:30:35

标签: mysql

我有一个联赛列表,按表中的字母顺序排列,即

  • 比利时职业联赛
  • 英格兰超级联赛
  • 英格兰锦标赛
  • 希腊 - 超级联赛 等等 等

等等

我希望他们订购

  • 英格兰 - 英超联赛
  • 英格兰 - 冠军
  • 比利时 - 职业联赛
  • 希腊 - 超级联赛

我试过了

SELECT League
FROM Leagues
ORDER BY  'England - Premier League',  'England - Championship',  `ID`

SELECT League
    FROM Leagues
    ORDER BY  'England - Premier League',  'England - Championship',  `ID`

没有任何运气,它们或者按字母顺序排列,我不想要,或者指定的2位于列表的底部。

我如何订购,指定2,其余按ID顺序?我也尝试过FIELD的订单,但仍然没有运气。

2 个答案:

答案 0 :(得分:0)

您可以使用field()功能:

order by field(league, 'England - Premier League', 'England - Championship', 
               'Belgium - Pro League', 'Greece - Super League')

编辑:

如果您只想要两个英文版本:

order by (substring(league, ' ', 1) = 'England) desc,
         league

答案 1 :(得分:0)

您可以尝试此ANSI-SQL版本:

SELECT League
FROM   Leagues
ORDER BY 
      CASE WHEN League LIKE 'England - %' THEN 1
           ELSE 999
      END, 
      ID

CASE将处理为英格兰联赛分配优先权,其余将按ID分类。

希望这能解决它。