使用SQL語句完成資料表的去重工作

2021-09-02 19:24:00 字數 1287 閱讀 5618

可能大家都遇到過這樣一種情況,一張表存在若干行資料,只是主鍵值相同,但是其它欄位都是相同的,這就是我們通常所說的資料庫重複資料,那我們是如何將這些資料刪除呢?現在我們就介紹一種方法來實現資料庫資料的去重工作。

首先我們需要模擬一下業務環境,建立一張資料表,裡面字段不用多,我們設定為四個,分別為:id,name,age,content。並為這張表插入所需的資料。

我們需要刪除重複的資料,但是又不能全部刪除,這該如何實現呢?

我們需要先查詢出需要保留的資料id,然後通過delete語句刪除id不再這個集合中的資料。現在重點來了,到底如何取出重複資料中其中乙個id呢?這時sql語句給我們給出了group by語句,它通過指定字段進行分組,我們只需要通過下面這個語句,就可以查詢出重複資料中的乙個。

select id from user group by name,age,content
執行結果:

走到這一步,問題就已經解決了一大半了。我們現在只需要根據查詢出來的id集,刪除不在這個集合中的元素即可。

delete from user where id not in (select id from user group by name,age,content)
執行後檢視user表:

可以看到,原先重複的資料已經被刪除了。

但是如果是使用mysql資料庫的博友,在執行這句話的時候會出現以下錯誤:

這是因為mysql不能先select出同一表中的某些值,再update這個表(在同一語句中)。我們可以通過乙個「中間表」來解決這個問題。

示例:

delete from user where id not in (select id from (select id from user group by name,age,content) t)
我們是先查詢出需要保留的資料,然後通過delete語句刪除除了保留資料的其他資料。

Django完成資料表遷移 2020 8 10

完成資料遷移的步驟 1.在主程式 setting 內註冊資料庫mysql databases host 可以用額外主機的ip位址鏈結到別人的資料庫,為了演示用本機的ip位址鏈結mysql資料庫2.建立乙個子應用 3.在主程式setting裡面註冊子程式 4.在子應用booktest內的models....

使用SQL語句建立資料表

create database test usetest 使用text庫,作為當前查詢的庫 create table tbclass clsid intprimary keyidentity 1,1 班級編號自增,主鍵,逗號後值為增量 clsname nvarchar 16 unique,唯一性約束...

用一條SQL完成資料表的行統計

by ben 作者的乙個軟體專案的查詢系統需求 有資料表 名稱 數量 狀態 產品a 10 進貨 產品a 20 銷售 產品b 20 進貨 要查詢結果為 產品名稱 庫存數量 產品a 10 產品b 20 解決方法一 select distinct 名稱,isnull select sum a.數量 fro...