資料庫記錄中重複的某些欄位的資料篩選

2021-06-13 22:32:50 字數 1054 閱讀 5674

如上一張表,有沒有辦法篩選出book重複的記錄並刪除呢?雖然sql的distinct聚合函式可以將查詢清單中的重覆記錄剔除,每種記錄值只返回其中 的一條記錄,但是它不能針對單個欄位查重,如果使用"select distinct book,id,author,price from t1"並非只查詢book欄位重複,而是作用於所有字段,只有當book,id,author,price幾個欄位都相同時才被認為是相同的記錄。實際中 我們通常需要針對一兩個字段進行查重,顯然用distinct關鍵字是行不通的。

sql的group by子句可以根據資料庫每一列的內容對查詢結果進行分類,那我們能不能利用這個子句呢?通過構造sql語句我們可以得到無重覆記錄的id,sql語句如 下:select max(id) from t1 group by book,這邊的max函式作用是在重覆記錄中選擇id值最大的記錄,將其改為min亦有相同的效果。現在我們就可以利用巢狀查詢來達到我們要的效果,完 整sql語句:select * from t1 where id in(select max(id) from t1 group by book),執行查詢後檢視如下:

如果要將重覆記錄刪除只須更改下sql語句,完整sql語句:delete * from t1 where id not in(select max(id) from t1 group by book)。

對於書目查重僅僅靠書名相同來判斷是不行的,除了書名相同外,還得依據書的作者以及出版社是否相同進行判斷,也就是得針對兩個或三個字段進行查重,要實現 也不難,只須對多個字段進行分組即可,完整sql語句如下:select * from t1 where id in(select max(id) from t1 group by book,author),資料表檢視如下:

刪除資料庫表中重複的記錄

有時候,我們會在平時的工作中碰到如下的問題 在乙個資料表開始的時候,由於考慮的不完全,可能主鍵配置沒有做好,可能在表中出現如下的重複資料 id name age 1 jason 23 2 jason 23 3 jason 23 4 alex 24 5 alex 24 現在當我們希望去掉重複的姓名資料...

複製資料庫記錄字段

有時候需要使用己有的資料庫記錄裡的字段,可以使用以下語句 insert into dsttable select field1,field2,field3,fieldn,value1 as fieldn 1,value2 as fieldn 2 from srctable where wherest...

資料庫中字段的約束

1.主鍵約束 primary key 1 主鍵用於唯一地標識表中的每一條記錄,可以定義一列或多列為主鍵。2 是不可能 或很難 更新 3 主鍵列上沒有任何兩行具有相同值 即重複值 不允許空 null 4 主健可作外健,唯一索引不可 2.唯一性約束 unique 1 唯一性約束用來限制不受主鍵約束的列上...