Postgresql 首先显示具体值,按不同条件排序

Dre*_*nHD 5 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
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的,但它不正确,我似乎找不到解决方案。首先对“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  
Run Code Online (Sandbox Code Playgroud)

事情应该是这样的。我的答案显示相同的结果,但不正确。我想是因为如果他们住在同一个地方我不会按名字订购

Abe*_*sto 7

您不仅可以按单个列对查询进行排序,还可以按记录排序
所以如果我正确理解你的要求:

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;
Run Code Online (Sandbox Code Playgroud)