用粘性项目排序SQL结果

问题描述 投票:0回答:2

有没有一种方法可以按字母和国家代码对结果进行排序,但让每个国家代码的一个结果排在最前面?

例如,这个顺序。

ORDER BY PortalStock.CountryCode DESC, PortalStock.Location ASC";

目前显示为:

Location    CountryCode
LONDON      GB
OXFORD      GB
READING     GB
LYON        FR
MARSEILLE   FR
PARIS       FR
RENNES      FR

我希望能够先按国家排序(GB第一),然后GB的牛津大学在列表的顶部,任何额外的结果是按字母顺序排列。

法国的结果应该从巴黎开始,任何额外的结果也应该按字母顺序排列。

Location    Country
OXFORD      GB
LONDON      GB
READING     GB
PARIS       FR
LYON        FR
MARSEILLE   FR
RENNES      FR

在不向数据库中添加更多顺序数据的情况下,这是否可行?

sql sql-order-by
2个回答
1
投票

您希望有条件地按.国家代码排序。

order by country desc,
         (case when location = 'oxford' then 1 else 2 end), 
          location;

如果您想要 oxford 顶多 GB 然后再添加一个条件。

(case when country = 'GB' and location = 'oxford' then 1 else 2 end)

注意:这将首先通过 country 不单 GB & 然后先排序 oxford 地点:

© www.soinside.com 2019 - 2024. All rights reserved.