gpt4 book ai didi

java - SQL 使用来自两个不同列的值进行排序

转载 作者:行者123 更新时间:2023-11-30 07:26:19 25 4
gpt4 key购买 nike

假设我有一个包含列 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。

最佳答案

解决这个问题最容易管理的方法可能是有一个包含所有类型的表,然后在其中有一个排序列。所以你可能有一个像这样的表:

TypeID      Name      SortOrder
1 FAMILY 2
2 GIVEN 1
3 PREFIX 3

然后您可以将其加入您的查询并使用:

ORDER BY SortOrder, Value

你可以用 CASE 表达式解决这个问题

ORDER BY CASE Type
WHEN 'GIVEN' THEN 1
WHEN 'FAMILY' THEN 2
WHEN 'PREFIX' THEN 3
END,
Value

但是类型越多,case 表达式就越难管理。

关于java - SQL 使用来自两个不同列的值进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10397459/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com