資料去重的幾種實現形式

2021-08-10 14:25:28 字數 1119 閱讀 4284

對資料庫進行操作,得到的結果有重複值,這是個不可避免的問題。從源頭上分析,分兩種情況:一是使用者執行了sql語句,此時得到的結果就已經包含重複值;另一種就是返回的物件是執行多條sql語句後得到了,每條sql語句返回的物件沒有重複值,但彼此之間存在重複現象,此時進行彙總操作就會出現重複值的情況。

例如如下一段**

select

distinct mti.*

from m_table mti

。。。。。(一些連線查詢語句)。。。。

where sur.user_id=#

涉及了多表查詢,使用者表、使用者—角色表、角色—表資訊表、表資訊表

通過當前的使用者id拿到使用者的角色列表,再對照角色-表資訊表,拿到相應的表id,最後去表資訊表中拿到使用者對應表的詳細資訊。其中使用者-角色表是一對多關係,角色-表資訊表是多對多關係。

出現重複的原因:因為角色-表資訊表是多對多的關係對映表,所以可能多個角色對映的表資訊中存在重複值,通過使用者id去得到最終的表詳細資訊時,就會有重複值,而使用者並不需要檢視重複的。最後給使用者展現的應該是去掉重複值之後的最大集合結果

解決辦法:distinct欄位可以是在資料庫層面上去重,如上**塊所示,selectdistinct就會把最後的結果去重後再返回,解決了查詢後出現重複值的問題。

出現重複的原因:有時候會存在要執行多條sql查詢語句,其中每條語句返回的list結果都不包含重複值,但是多個list結果彼此間可能存在重複值,這時我們就需要對list集合結果進行去重合併了。

解決辦法:1、set集合預設是不能新增重複值的,用set集合去接收就能解決了。

2、list集合中就已經實現了去重的api,我們直接使用就好了。如下所示:

list

a = 。。。;

list

b= 。。。;

a.removeall(b);

a.addall(b);

首先呼叫removeall方法,將a其中與b重複的table物件全部移除,再呼叫addall方法,將b中物件新增到a集合當中,實現去重合併。

vue import的幾種表現形式

在使用vue開發專案的時候,很多使用會import很多模組,或者元件,下面說下import的幾種表現形式 例如 我在 src api table.js import request from utils request export function getlist params export fu...

ruby迴圈的實現形式

ruby迴圈的實現形式 關鍵字 ruby ruby語言的用法非常的靈活。我們來舉個簡單的例子 如我們有個陣列 array w a b c d e f 現在我們要遍歷該陣列,並列印出每個元素 ruby 1.2.方法一 3.length array.list 4.length.times do t 5....

字尾樹的實現形式

高階資料結構 上述字尾樹t是根據字串s的所有字尾構建的。有時候這個s可以是要給字串集合,所以字尾樹t是根據所欲字串的字尾構建的。這種字尾樹也叫做廣義字尾樹。一種很自然的構建方式可以給每個字串加兩兩不同的結尾符,這些結尾符沒有在任何字串 現過。然後,我們將這些新增了結尾符的字串首尾相接作為乙個整體來構...