假设我有一个包含 PART_TYPE 和 VALUE 列的表 NAME。每种类型都可以有多种类型,例如 FAMILY、GIVEN、PREFIX 等。
我想做的是编写 SQL 来获取所有名称,但首先按特定类型对它们进行排序,然后在该类型中按字母顺序对它们进行排序。
我有这样的事情:
SELECT *
FROM name
ORDER BY (
CASE
WHEN PART_TYPE = 'GIV'
THEN VALUE
END)
但我不确定如何将其他类型作为主要订单,同时将 VALUE 作为次要订单。添加另一个 case 语句只会使 VALUE 成为主要订单。
我想保持这个数据库独立,但如果需要,我愿意让它特定于 Oracle。
我怎样才能做到这一点?此外,非常感谢使用 Hibernate Criteria 执行此操作的方法。
编辑:我需要按我定义的特定顺序对 PART_TYPE 进行排序。特别是,它需要先给,然后是家庭。
所以它应该是这样的:
GIVEN A
GIVEN B
GIVEN C
FAMILY A
FAMILY B
自然顺序是家庭优先,而不是给定的。