gpt4 book ai didi

java - SQL + JPA : return rows with maximum value of single column

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

我的数据库表数据如下所示:

col1                col2            col3                col4        col5        col6
value null null blaDiff 0 x1
value null null blaDiff 0 x2
value null blabla null 1 x1
value null blabla null 1 x3
value bla null null 2 x1
value bla null null 2 x2
value otherBla null null 2 x3

我希望获取具有 col5 最大值的行,但仅获取满足过滤条件的行。我可以使用如下查询使其工作:

SELECT col1
,col5
,col6
FROM TABLE v
WHERE v.col1 = 'value'
AND (
v.col2 = 'bla'
OR v.col3 = 'blabla'
OR v.col4 = 'blaDiff'
)
AND v.col5 = (
SELECT MAX(v.col5)
FROM TABLE v1
WHERE v1.col1 = 'value'
AND (
v.col2 = 'bla'
OR v.col3 = 'blabla'
OR v.col4 = 'blaDiff'
)
);

然后我的结果如下:

col1                col2            col3                col4        col5        col6
value bla null null 2 x1
value bla null null 2 x2

我想知道是否有更好、更简单的方法来做到这一点。请注意,我在主题中提到了 JPA,因为之后我需要使用 JPA Criteria 构建器来编写此逻辑。所以我需要一些具有 JPA 2.0 支持的功能的解决方案。我的数据库是Oracle 11g,JDK版本是1.7.051。

最佳答案

我倾向于使用窗口函数:

SELECT col1, col5, col6
FROM (SELECT v.*,
MAX(col5) OVER (PARTITION BY col1) as max_col5
FROM TABLE v
WHERE v.col1 = 'value' AND
(v.col2 = 'bla' OR v.col3 = 'blabla' OR v.col4 = 'blaDiff')
) v
WHERE v.col5 = v.max_col5;

关于java - SQL + JPA : return rows with maximum value of single column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39769822/

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