按字段对结果进行分组,但显示全部并按自定义顺序显示
Group results by field but show all and display in custom order
我目前正在使用以下内容来显示玩家列表
$sql = <<<SQL
SELECT pla.*, tea.*
FROM Players pla
INNER JOIN Teams tea USING (TeamID)
WHERE TeamID = '$TeamID'
SQL;
我现在想对这些结果进行排序,将它们分组到不同的位置。因此,例如所有守门员按字母顺序显示在一起,然后是所有后卫。
我知道我可以
ORDER BY Position
然而,这将首先抛出 "attackers",我希望这些位置显示为守门员、后卫、中场、进攻者。我需要做 4 个单独的查询吗?
你可以做一个有条件的订单,它会做你想做的事
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
我在末尾添加了位置,以便在按位置分组后按升序排列结果
我目前正在使用以下内容来显示玩家列表
$sql = <<<SQL
SELECT pla.*, tea.*
FROM Players pla
INNER JOIN Teams tea USING (TeamID)
WHERE TeamID = '$TeamID'
SQL;
我现在想对这些结果进行排序,将它们分组到不同的位置。因此,例如所有守门员按字母顺序显示在一起,然后是所有后卫。
我知道我可以
ORDER BY Position
然而,这将首先抛出 "attackers",我希望这些位置显示为守门员、后卫、中场、进攻者。我需要做 4 个单独的查询吗?
你可以做一个有条件的订单,它会做你想做的事
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
我在末尾添加了位置,以便在按位置分组后按升序排列结果