【发布时间】:2012-05-01 12:09:57
【问题描述】:
假设我有一个包含列 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
自然顺序是 FAMILY 优先,而不是 GIVEN。
【问题讨论】:
-
ORDER BY TYPE, VALUE? -
@zerkms 如何确保类型是由 GIVEN 然后 FAMILY 排序的?
-
这是一个与这个问题类似的问题:stackoverflow.com/questions/10350330/…
-
感谢您的回答。我正在坚持看看是否有人有这个的休眠标准版本。如果几个小时后没有出现,我仍然会接受答案。
-
ORDER BY part_type DESC, value?
标签: java sql oracle hibernate sql-order-by