ホームページ >データベース >mysql チュートリアル >SQLで重複データを削除する方法
SQL では、select ステートメントを使用して重複データを削除できます。構文は次のとおりです。「select * from field where field id in (select field id from field group by field getting count (field id) >」 1)」。
このチュートリアルの動作環境: Windows7 システム、mysql8.0 バージョン、Dell G3 コンピューター。
SQL ステートメントを使用して重複を削除し、1 つだけを保持する
数千のレコードの中に同一のレコードがいくつかあります。SQL ステートメントを使用して重複を削除するにはどうすればよいですか
冗長な重複を検索するテーブル内のレコード 重複レコードは単一フィールド (peopleId) に基づいて判断されます
select * from people where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
Extension:
テーブル内の重複する重複を削除します レコード、重複レコードが判断されます単一のフィールド (peopleId) に基づいて、最小の ROWID を持つレコードのみが残ります。
delete from people where peopleName in (select peopleName from people group by peopleName having count(peopleName) > 1) and peopleId not in (select min(peopleId) from people group by peopleName having count(peopleName)>1)
テーブル内の冗長な重複レコード (複数のフィールド) を検索します。
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
テーブルを削除します。 冗長な重複レコード(複数のフィールド)、最小の rowid を持つレコードのみが残ります
delete from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
ルックアップ テーブル内の過剰な重複レコード (複数のフィールド)、最小の rowid を持つレコードを除外します
select * from vitae a where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1) and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
最初のレコードを削除しますフィールドの左側の数字:
update tableName set [Title]=Right([Title],(len([Title])-1)) where Title like '村%'
フィールドの右側の最初の数字を削除します:
update tableName set [Title]=left([Title],(len([Title])-1)) where Title like '%村'
False テーブル内の重複する重複レコード (複数のフィールド) を削除します。レコードは含まれません。最小の ROWID
update vitae set ispass=-1where peopleId in (select peopleId from vitae group by peopleId
関連する推奨事項: 「mysql チュートリアル 」
以上がSQLで重複データを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。