需求:想根据某一个字段进行分组,然后取出所有的列数据,在mysql 中,可以直接通过 group by 进行相应的操作获取数据,
但是在ORACLE中,所取的字段必须要与group by 中相一致,才能进行读取操作,因为分组后的其他字段,oracle 并不知道要返回哪一个,但是这种需求又是存在的。怎么办,折腾一番,找到的解决方案
SQL 语句如下
select * from ( select t.* ,row_number() over(partition by ip,mac order
by rownum) rn from tableName t where condition ) where rn
=1;
1:分组
select t.* ,row_number() over(partition by ip,mac order
by rownum) rn from tableName t where condition
2.选组内数据
就是外层的select rn 代表的是重复数据的第一条。可根据自己需求编写,这里就只是提供一个思路。具体场景还要具体对待。