代码之家  ›  专栏  ›  技术社区  ›  Jeni Vasileva

条件为[关闭]的SQL排序

  •  1
  • Jeni Vasileva  · 技术社区  · 6 年前

    我有一张有球员的桌子。管理员想按条件对玩家进行分类。if列 activerank = 1 然后玩家添加排序其他if activerank = 2 玩家应该出现在玩家的末尾。我该怎么做?

    这是我的查询,如果没有此条件:

    $sql = '
      SELECT c.*
      FROM `child` AS c
      WHERE  '
      c.`id` > 0
      ' ORDER BY c.`rank` DESC ';
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Elbek    6 年前

    您可以使用附加排序,按activerank升序排序

      SELECT c.*
      FROM `child` AS c
      WHERE  '
      c.`id` > 0
      ' ORDER BY activerank ASC,  c.`rank` DESC '
    

    在这个查询中,玩家 activerank = 1 将是第一个,并将根据排名和球员在其中排序 activerank = 2 将是最后一个

    对于更高级的排序,我建议使用 CASE CLAUSE

        2
  •  1
  •   D-Shih    6 年前

    您可以尝试添加 CASE WHEN 在里面 ORDER BY ,并使用多个 排序依据

     SELECT c.*
      FROM `child` AS c
      WHERE  'c.`id` > 0' 
      ORDER BY c.`rank` DESC,
       (
       CASE activerank 
            WHEN 1 THEN 0
            WHEN 2 THEN 1 
       END
       )