1
我的數據庫表的數據是這樣的:SQL + JPA:返回行單列的最大值
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的最大值行,但只有那些滿足過濾criteria.I可能行使其工作使用查詢,看起來像:
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。
爲什麼必須通過'col1'分區當存在用於'COL1 =「value''的過濾條件?另外,OP似乎需要輸出中的所有六列,並且子查詢中的FROM不應該跟隨單詞TABLE - 這可能會引發語法錯誤。 – mathguy
@mathguy。 。 。因爲如果OP將'='更改爲不等式會更安全。 –
按預期工作!也容易理解。謝謝, – user613114