按字段对结果进行分组,但显示全部并按自定义顺序显示

时间:2015-04-17 17:10:04

标签: php mysql mysqli

我目前正在使用以下内容来显示播放器列表

    $sql = <<<SQL
    SELECT pla.*, tea.*
    FROM Players pla
    INNER JOIN Teams tea USING (TeamID)
    WHERE TeamID = '$TeamID'
SQL;

我现在想通过将它们分组到位置来安排这些结果。因此,例如所有守门员按字母顺序一起显示,然后是所有防守者。

我知道我可以

ORDER BY Position

然而,这会引发攻击者&#34;首先,我希望将这些职位展示为守门员,后卫,中场,攻击者。我需要做4个单独的查询吗?

1 个答案:

答案 0 :(得分:2)

你可以做一个有条件的订单,那就是做你想做的事情

ORDER BY 
    CASE 
        WHEN position = "Goalkeepers" THEN 1
        WHEN position = "Defenders" THEN 2
        WHEN position = "Midfielders" THEN 3
        WHEN position = "Attackers" THEN 4
        ELSE 5
    END,
    name

我在最后添加了位置,按照位置

对结果进行分组后按升序排序