这需要在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_order
、gender_order
等字段,并在其上放置索引。