天天看點

hibernate 根據某一列資料去重

其實這種方式不局限于hibernate

problem:

項目中遇到好幾次這種問題,需要根據某個字段去重,也就是查出來的某個字段必須的值必須都是unique的。

因為sql去重必須是整條資料所有字段完全相同才能去重,是以無法直接通過distinct根據某一列去重。

Solution:

給這個表添加一個辨別列,表示某條資料能夠代表一組資料,在插入資料的時候可以判斷一下這個值是否可以作為辨別列,可以的話則設定為true,否則false,之後在查詢的時候可以加上這個條件,那麼查出來的效果就相當于根據某一列去重。

“example: ”

table:

采購商 供應商 商品
采購商1 供應商1 goods1
采購商1 供應商1 goods3
采購商1 供應商1 goods4
采購商1 供應商2 goods5

采購商需要查詢與自己綁定關系的供應商,這個時候需要根據供應商列進行去重,是以可以加一個辨別列,當采購商跟這個供應商第一次綁定關系的時候把這個辨別列設定true

采購商 供應商 商品 是否辨別列
采購商1 供應商1 goods1 true
采購商1 供應商1 goods3 false
采購商1 供應商1 goods4 false
采購商1 供應商2 goods5 true

當查詢的時候把辨別列為true的查出來就行。

條條大路通羅馬,一定要發散思維。