Sql 如何按案例和订单进行排序?

Sql 如何按案例和订单进行排序?,sql,postgresql,sql-order-by,Sql,Postgresql,Sql Order By,我要查询下一张桌子 |id |Name|type | --------------------- |1 |B |Secondary | |2 |A |Scholar | |3 |C |University| 这可能是sql查询: select * from invite order by case "type" when 'Scholar' then 1 when

我要查询下一张桌子

|id |Name|type      |
---------------------
|1  |B   |Secondary |
|2  |A   |Scholar   |
|3  |C   |University|
这可能是sql查询:

select * from invite order by  
        case "type" 
             when 'Scholar'   then 1 
             when 'Secondary' then 2
             when 'University' then 3
         end asc;
但现在我需要按案例排序: 示例:
当'Scholar'时,则为1 desc

有可能吗

我的目标是按id和按案例类型排序,例如:

|id |Name|type      |
---------------------
|1  |B   |Secondary |
|2  |B   |Secondary |
|3  |B   |Secondary |
|4  |A   |Scholar   |
|5  |A   |Scholar   |
|6  |C   |University|
|7  |A   |Scholar.  |
结果将是:

|id |Name|type      |
---------------------
|7  |A   |Scholar.  |
|5  |A   |Scholar   |
|4  |A   |Scholar   |
|3  |B   |Secondary |
|2  |B   |Secondary |
|1  |B   |Secondary |
|6  |C   |University|
我想你想要:

order by  
    case "type" 
         when 'Scholar'    then 1 
         when 'Secondary'  then 2
         when 'University' then 3
    end,
    id desc
也可以使用数组而不是条件逻辑:

order by
    array_position(array['Scholar', 'Secondary', 'University'], "type"),
    id desc
我想你想要:

order by  
    case "type" 
         when 'Scholar'    then 1 
         when 'Secondary'  then 2
         when 'University' then 3
    end,
    id desc
也可以使用数组而不是条件逻辑:

order by
    array_position(array['Scholar', 'Secondary', 'University'], "type"),
    id desc

您的问题表明,您希望在每个小组中都有一个新的方向:

order by (case "type" 
             when 'Scholar'   then 1 
             when 'Secondary' then 2
             when 'University' then 3
          end) asc;
         (case when "type" = Scholar then id end) desc,
         id asc;

但是,您的示例表明,您只需要第二个
order by
键,
id desc

您的问题表明您希望在每个组中都有一个新的方向:

order by (case "type" 
             when 'Scholar'   then 1 
             when 'Secondary' then 2
             when 'University' then 3
          end) asc;
         (case when "type" = Scholar then id end) desc,
         id asc;

但是,您的示例表明,您只需要第二个
orderby
键,
id desc

请提供一个示例,通过显示所需结果来说明您的意思。“1”是一个常数。它是上升还是下降都没有区别。我不认为“学者”与其他群体有什么不同。请举例说明你想要的结果是什么意思。“1”是一个常数。它是上升还是下降都没有区别。我看不出“学者”与其他组有什么不同。这应该适用于所有情况:(case when status=SENT然后id end)desc,@jdode。然后您只需要将
id desc
作为第二个
order by
键。如何通过其他参数进行排序?按id和name@jdode . . . 您可以添加其他键。我不知道你想在哪里订购。在这一部分中,在这一部分中,当“大学”时,则3)asc和名称;这应该适用于所有情况:(状态=发送时的情况,然后id结束)desc、@jode。然后您只需要将
id desc
作为第二个
order by
键。如何通过其他参数进行排序?按id和name@jdode . . . 您可以添加其他键。我不知道你想在哪里订购。在这一部分中,在这一部分中,当“大学”时,则3)asc和名称;