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)
事情应该是这样的。我的答案显示相同的结果,但不正确。我想是因为如果他们住在同一个地方我不会按名字订购
您不仅可以按单个列对查询进行排序,还可以按记录排序。
所以如果我正确理解你的要求:
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)