![oracle怎麼重查詢](https://img.php.cn/upload/article/000/000/051/5edee92d5a913304.jpg)
oracle重查詢的方法是:
oracle 資料庫多重欄位去重
方法介紹:distinct 關鍵字、group by 、row_number ()over(partition by 列order by 列desc)
我的需求是:根據某幾列去重查詢出去重後的全部資訊。最後我選擇的是第三種方法。
我的想法:我想找出一個更簡單的方法去 實作去重查詢。越直接越好。
表格結構&&內容
![1591667074138864.png oracle怎麼重查詢](https://img.php.cn/upload/image/682/238/805/1591667074138864.png)
1、distinct 關鍵字的用法:distinct 關鍵字後面的欄位組合去重distinct 必須
# select distinct id from test
結果;根據id 去重
select distinct id,name from test
##結果:根據id和name 組合去重(類似 id | | name 這樣去重)
![1591667105498325.png oracle怎麼重查詢](https://img.php.cn/upload/image/804/378/478/1591667105498325.png)
2、group by 分組去重
select id,name from test group by id,name
結果:根據id,name 組合去重
![1591667131702182.png 20170523141826007 (1).png](https://img.php.cn/upload/image/971/521/979/1591667131702182.png)
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) 先依照以column2 asc)分組,再將分組後的資料依column2 升序排列
註:order by 必須得有
範例select a.*,row_number() over(partition by a.id,a.sex order by name) su from test a;
![1591667230638812.png oracle怎麼重查詢](https://img.php.cn/upload/image/243/437/300/1591667230638812.png)
去重例子:根據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
結果:
![1591667269858942.png oracle怎麼重查詢](https://img.php.cn/upload/image/134/711/179/1591667269858942.png)
我的需求是:根據某幾列去重查詢出去重後的全部資訊。
推薦教學: 《
Oracle教學》
以上是oracle怎麼重查詢的詳細內容。更多資訊請關注PHP中文網其他相關文章!