oracle去重查詢的方法是:
方法介紹:distinct 關鍵字、group by? 、row_number ()over(partition by 列 order by 列 desc)
我的需求是:根據某幾列去重 查詢出去重后的全部信息。最后我選擇的是第三種方法。
我的想法:我想找出一種更簡單的方法去 實現去重查詢。越直接越好。
表結構&&內容
1、distinct 關鍵字的用法:distinct 關鍵字后面的字段組合去重 distinct 必須
select distinct id from test
結果 ;根據id 去重
select distinct id,name from test
結果:根據id和name 組合去重(類似于? id || name? 這樣去重)
2、group by 分組去重
select id,name from test group by id,name
結果:根據id,name 組合去重
3、row_number ()over(partition by 列 order by 列 asc | desc)方法
3.1 row_number() over(order by column asc)? ?先對列column按照升序,再為每條記錄返回一個序列號
3.2 row_number() over(partition by column1 order by column2 asc) 先按照column1分組,再對分組后的數據根據column2 升序排列
注:order by 必須得有
例子select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a;
去重例子:根據 id和sex 去重
select id,name,sex from(
select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a )
where su=1
結果:
我的需求是:根據某幾列去重 查詢出去重后的全部信息。
推薦教程: 《Oracle教程》