sql - Postgresql首先显示特定值,按不同标准排序

标签 sql postgresql sql-order-by

在这个小练习中,我需要先展示来自“Zoetermeer”的人,然后 按姓名排序,同名的人需要按“bondsnr”(这是一个唯一编号)排序, 地点不是“Zoetermeer”的人只需要按“bondsnr”排序。

select spelersnr, naam, plaats, bondsnr
from spelers
where bondsnr is not null
order by case when plaats = 'Zoetermeer' then 1
          else 2 end,
          bondsnr

这是我现在所拥有的,但它不正确,我似乎找不到解决方案。 首先对“Zoetermeer”中的人进行排序,但我不知道如何按编号对具有相同姓名的人进行排序

编辑

spelersnr   naam       plaats      bondsnr    
    27     Cools      Zoetermeer    2513
   104   Moerman      Zoetermeer    7060
    44   Bakker, de     Rijswijk    1124
   112   Baalen, van   Rotterdam    1319
    83  Hofland         Den Haag    1608
     2  Elfring         Den Haag    2411
     8  Niewenburg      Rijswijk    2983
    57  Bohemen, van    Den Haag    6409
   100  Permentier      Den Haag    6524
     6  Permentier      Den Haag    8467  

这是应该的。 我的回答显示相同的结果,但不正确。 我想是因为如果他们住在同一个地方,我不会按名字点菜

最佳答案

您不仅可以按单个列对查询进行排序,还可以按 records 对查询进行排序.
因此,如果我正确理解您的要求:

select spelersnr, naam, plaats, bondsnr
from spelers
where bondsnr is not null
order by
  case
    when plaats = 'Zoetermeer' then
      (1,naam,bondsnr)
    else
      (2,null::text,bondsnr)
  end;

关于sql - Postgresql首先显示特定值,按不同标准排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43251242/

相关文章:

sql - 快速获取表格中至少出现 N 次的值

sql - 删除重复行 #2

regex - 修剪具有不同字符的字符串的前导和尾随部分

postgresql - 无法在 PostgreSQL 中更新 View ?

sql - rails : Order by sum of two columns

MySQL "Group By"和 "Order By"

mysql - 如何设计表架构来存储 <select multiple> 中的值

postgresql - Docker PostgreSQL:初始化脚本

mysql order by 不是唯一的等级?

sql - 在 SQL Server 中复制对象层次结构的最佳方法是什么