按顺序排序

时间:2015-06-21 22:47:59

标签: sql sql-order-by firebird

我有一个像

这样的where子句的查询
SELECT 
    name
FROM
   adresses
WHERE
   (name ='Peter' AND
   surname = 'Miller') OR
   emailadress1 = 'e@mail.com' OR
   emailadress2 = 'b@mail.com'

示例表

name    surname     emailadress1    emailadress2    
------------------------------------------------
Michael             e@mail.com
Jim                                 b@mail.com
Peter   Miller              

导致:

Michael
Jim
Peter

现在它将记录按顺序排列,就像上面示例表的排序顺序一样。

但是我希望将它们放在列表中,然后按照where子句的顺序进行操作。喜欢

name & surname = sortorder 1 
emailadress1   = sortorder 2
emailsadress2  = sortorder 3

实施例

Peter   
Michael
Jim

3 个答案:

答案 0 :(得分:3)

您使用case声明:

order by (case when (name ='Peter' AND surname = 'Miller') then 1
               when emailadress1 = 'e@mail.com' then 2
               when emailadress2 = 'b@mail.com' then 3
               else 4
          end)

答案 1 :(得分:1)

添加

order by name, surname, emailadress1, emailadress2

查询。

答案 2 :(得分:0)

如果您希望按反向字母顺序对它们进行排序,则可以在查询末尾添加ORDER BY名称DESC。

如果您希望按特定人员对结果进行排序,则必须向其添加某种标识符或排名,然后按此排序。