SQL文 /* MySQL で重複行を削除するいくつかの方法 ---Chu Minfei ---2010-08-12 22:49:44.660 --引用または転載する場合は出典を明記してください: http://blog.csdn.NET/feixianxxx */ ----------------すべてのフィールドが繰り返されます------------------------ --1 テーブル置換を使用して重複を削除します。create table test_1(id int,value int); test_1 を挿入、1,2 を選択、すべて結合、1,2 を選択、すべて結合、2,3 を選択; -- ソース テーブルと同じ構造を持つ空の一時テーブルを作成します。create table tmp like test_1; -- 一時テーブルに一意のレコードを挿入します。 insert tmp select distinct * from test_1; --元のテーブルを削除します。drop table test_1; -- 一時テーブル名をターゲット テーブルに変更します。rename table tmp to test_1; --showmysql> test_1 から * を選択します。 +------+-------+ | ID | 値 | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ --2. auto_increment属性列を追加します(この方法はMyISAMまたはBDBエンジンテーブルでのみ使用できます) テーブル test_1(id int,value int) を作成します。engine=MyISAM; test_1 を挿入、1,2 を選択、すべて結合、1,2 を選択、すべて結合、2,3 を選択; test_1 テーブルを変更し、id2 int not null auto_increment を追加します。 主キー(id,value,id2)を追加します。 test_1 から * を選択します。 +----+-------+-----+ | id | 値 | id2 | +----+-------+-----+ | 1 | 2 | 1 | | 1 | 2 | 2 | | 2 | 3 | 1 | +----+-------+-----+ id2<>1 の場合、test_1 から削除します。 テーブル test_1 を変更し、id2 を削除します。 test_1 から * を選択します。 +----+-------+ | ID | 値 | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ -------------------一部のフィールドが重複しています--------------------- --1. create table test_2 (id int, value int); でインデックスを追加します。 test_2 を挿入、1,2 を選択、すべて結合、1,3 を選択、すべて結合、2,3 を選択; IGNOREテーブルtest_2を変更し、主キー(id)を追加します。 test_2 から * を選択します。 +----+-------+ | ID | 値 | +----+-------+ | 1 | 2 | | 2 | 3 | +----+-------+ レコード 1 3 が消えていることがわかります。列に NULL 値が存在する可能性があるので、ここでも Unique 制約を使用できますが、ここでは NULL が複数存在する可能性があります。 --2.結合テーブル削除 create table test_2(id int,value int); test_2 を挿入、1,2 を選択、すべて結合、1,3 を選択、すべて結合、2,3 を選択; test_2からAを削除 a join (select MAX(value) as v,ID from test_2 group by id) b a.id=b.id かつ a.value<>bv の場合; test_2 から * を選択します。 +------+-------+ | ID | 値 | +------+-------+ | 1 | 3 | | 2 | 3 | +------+-------+ --3. Increment_auto を使用することも、上記のすべてのフィールドから重複を削除する 2 番目の方法になります --4. エラーが発生しやすい方法 --サブクエリ メソッドを思いつく友人もいるかもしれません。試してみましょう。create table test_2 (id int, value int); test_2 を挿入、1,2 を選択、すべて結合、1,3 を選択、すべて結合、2,3 を選択; 存在する場合は test_2 から a を削除します(a.id=id かつ a.value<value の場合、test_2 から * を選択)。 /*エラー 1093 (HY000): FROM 句で更新のターゲット テーブル 'a' を指定することはできません*/ 現在、テーブルから削除したり、サブクエリで同じテーブルから選択したりすることはできません。 ------------------特定の重複行を削除する------------- --主に+limitまたは直接limitによる順序で テーブル test_3(id int、value int) を作成します。 test_3 を挿入、1,2 を選択、すべて結合、1,3 を選択、すべて結合、1,4 を選択、すべて結合、2,3 を選択; -- これは、ID=1 値が最も小さいレコードを保持し、他の ID を持つレコードを削除します。delete from test_3 where id=1 order by value desc limit 2; test_3 から * を選択します。 +------+-------+ | ID | 値 | +------+-------+ | 1 | 2 | | 2 | 3 | +------+-------+ レコードを削除して1つだけ残したい場合は、次の方法で注文を削除できます。 以下もご興味があるかもしれません:
|
<<: ReactでのsetStateの使用と同期と非同期の使用
>>: ubuntu16.04 で nginx を完全にアンインストールするための関連コマンド
序文この記事では、MySQL 8.0 の新機能を使用して再帰クエリを実装します。詳細なサンプル コー...
効率的に要件を満たし、コンポーネント ライブラリの肥大化や車輪の再発明を避けるために、私は以前、大画...
目次機能紹介レンダリング1. ホームページレンダリング用のコード(index03) 2. ゲーム開始...
この記事では、主要な CSS ウェブサイトで推奨されている 20 個の便利なルールとベスト プラクテ...
目次序文1. コードによって設定されたデータベース名またはパスワードがローカルデータベースと一致して...
環境サーバー: centos7クライアント: ウィンドウCentos7 に docker+gitla...
目次1. 電卓機能の紹介2. 計算機ページのデザイン1. ナビゲーションバー2. データ部分3. i...
コマンドを実行してプラグインpostcss-pxtoremをインストールします npm インストール...
目次文章LOCKパラメータアルゴリズムパラメータCOPY TABLE プロセスIN-PLACEプロセ...
概要: Web ページをより美しく見せるために、ここでは CSS3 でよく使用されるスタイルをいくつ...
目次序文文章1. グローバル登録2. 部分登録3. フック機能とパラメータ設定4. 柔軟な使い方(1...
サーバーデータがSSL証明書を使用して暗号化および認証されていない場合、ユーザーのデータはプレーンテ...
構文フォーマット: row_number() over(partition by grouping ...
console.log( [] == ![] ) // 真 console.log( {} == ...
一部の MySQL テーブルには重複レコードが含まれている場合があります。重複データが存在することを...