这需要在使用FlameRobin的Firebird中完成
我的问题非常简单,但我仍然需要帮助
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是如此有限,我需要一些帮助
答案 0 :(得分:0)
我认为您最好在您的选择中构建这些计算字段,然后使用它们进行排序,如下所示:
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_order
,gender_order
等字段,并在其上放置索引。