众所周知
MySQL中可以 select 多个字段 然后 group by 单独一个字段,像下面这样
SELECT a, b, c FROM table_1 GROUP BY a;
MySQL是因为做了优化,在group by会后自动合并数据,默认取第一个数据覆盖其他数据,而Oracle中不能这样,必须GROUP BY a, b, c 三个(全部)字段;
Oracle中如何实现能group by单一字段呢:
利用OVER(),PARTITION BY可解决该问题,实现像mysql一样的查询
select *
from (
select
t.a, t.b, t.c
ROW_NUMBER() OVER(PARTITION BY t.a ORDER BY t.a) as rn
from table_1 t
)
where rn = 1;