数据量特别大时oracle分组查询每组一条
时间: 2023-10-17 17:02:17 浏览: 107
当数据量特别大时,Oracle分组查询每组一条可以使用以下两种方法:
1. 使用ROW_NUMBER()函数
使用ROW_NUMBER()函数可以为每个分组中的行分配一个唯一的序号,然后选择序号等于1的行。例如:
```
SELECT *
FROM (
SELECT col1, col2, col3, ROW_NUMBER() OVER (PARTITION BY col1 ORDER BY col2) rn
FROM table
)
WHERE rn = 1;
```
这将按col1分组,并按col2排序,然后为每个分组中的行分配一个序号。最后,选择序号等于1的行,即每个分组中的第一行。
2. 使用子查询
使用子查询可以通过在主查询中选择每个分组中的最小值或最大值来实现。例如:
```
SELECT col1, MIN(col2), MIN(col3)
FROM table
GROUP BY col1;
```
这将按col1分组,并选择每个分组中col2和col3的最小值。这将为每个分组选择一行。
阅读全文