假设我有这样的数据:
| id | code | name | number |
-----------------------------------------------
| 1 | 20 | A | 10 |
| 2 | 20 | B | 20 |
| 3 | 10 | C | 30 |
| 4 | 10 | D | 80 |
我想按code
值对行进行分组,但是返回真正的行(不是某些聚合函数)。
我知道只是
select *
from table
group by code
将无法工作,因为数据库不知道哪个行返回代码相同的行。
所以我的问题是如何告诉数据库选择(例如)较低的数字列,所以在我的情况下
| id | code | name | number |
-----------------------------------------------
| 1 | 20 | A | 10 |
| 3 | 10 | C | 30 |
P.S。
我知道如何通过PARTITION执行此操作,但这只能在Oracle数据库中使用,并且无法在JPA条件构建器中创建(我的最终目标是什么)。
答案 0 :(得分:0)
为什么你不使用这样的代码?
SELECT
id,
code,
name,
number
FROM
(
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY code ORDER BY number ASC) AS RowNo
FROM table
) s
WHERE s.RowNo = 1
答案 1 :(得分:0)
您可以查看此网站;