如何 return 具有特定值的行最后并按名称排序?

How do I return rows with a specific value last and order by name?

我希望查询 return table 的行,其中列(代码)包含特定值 3 或 4 然后按客户订单移至底部

如果我有一个像这个例子的table:

       Name  Code  
      -------------
        Arun  1    
        Arun  2
        Arun  3
        Arun  4
        Babu  1
        Babu  3
        Raj   1
        Raj   2
        Ashok 1
        Ashok 2

并使用 table 我想查询 return 列(代码)包含值 3 或 4 底部的行,然后按名称排序。这可能只使用一个查询吗?

预期输出

       Name  Code 
      ------------
        Ashok 1
        Ashok 2
        Raj   1
        Raj   2
        Arun  1
        Arun  2
        Arun  3
        Arun  4
        Babu  1
        Babu  3

您可以在 ORDER BY 子句中添加一个子查询,这将允许按名称排序,其中 3/4 在其他值之后:

SELECT atable.name, atable.code
FROM atable
ORDER BY (
  SELECT a1.code
  FROM atable a1
  WHERE a1.name = atable.name
  AND a1.code IN ( 3, 4 )
  LIMIT 1 ) DESC, atable.name, atable.code;