SQL Group by one column并决定选择哪一列

时间:2015-05-12 07:45:41

标签: sql jpa group-by

假设我有这样的数据:

|  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条件构建器中创建(我的最终目标是什么)。

2 个答案:

答案 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)

您可以查看此网站;

Data Partitioning