SQL 按大小写示例按字母顺序降序排列(火鸟)



这需要在Firebird中使用FlameRobin完成

我的问题很简单,但我仍然需要帮助

Select * from Clients
order by Case town
when 'amsterdam' Then 1
when 'rotterdam' Then 2
when 'maastricht' Then 3
else 4 end,
Case Gender 
when null then 1
when 'Male' then 2
when 'Female' then 3
else 4 end,

---从这里开始,我想要的东西就错了——

Case name
when null then 1
when asc then 2    ( and here I want the names alphabetical descending )
else 3 end 

因为 sql 非常有限,我需要在这里提供一些帮助

我认为您最好在选择中构建这些计算字段,然后使用它们进行如下排序:

SELECT *,
    (CASE town
        WHEN 'amsterdam' THEN 1
        WHEN 'rotterdam' THEN 2
        WHEN 'maastricht' THEN 3
        ELSE 4
    END CASE) as town_order,
    CASE gender
        WHEN ...
        ...
        ELSE 4
    END CASE) as gender_order,
    CASE gender
        WHEN ...
        ...
        ELSE 3
    END CASE) as name_order
ORDER BY town_order ASC, gender_order ASC, name_order ASC, name DESC

当然,这将是一个非常非最佳的查询,无法使用任何类型的索引进行排序。 如果你真的想有效地查询,你应该在你的表中添加特定的town_ordergender_order等字段,并在其上放置索引。

最新更新