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

时间:2015-03-10 10:11:09

标签: postgresql sql-order-by

我希望我的查询返回表(行)代码中包含特定值3或4的行 然后按客户订单底部移动

如果我有一个类似这个例子的表:

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

使用该表我想查询返回列(代码)包含值3或4的行,然后按名称返回行。这可以只使用一个查询吗?

预期输出

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

1 个答案:

答案 0 :(得分:1)

您可以在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;