重複データが存在することができ、時には我々は、重複データを削除する必要があるいくつかのケースでは、MySQLのデータテーブル内のいくつかの重複レコードがあるかもしれません。
防止重複データがテーブルに表示されます 指定したフィールドで提供することができるインデックスデータの一意性を保証するために、MySQLのデータテーブルPRIMARY KEY(主キー)またはUNIQUE(ユニーク)です。 次の表にする試みの一例:なし主キーインデックスは、表には、重複した複数のレコードが表示されることができます。 TABLE person_tblのCREATE ( FIRST_NAME CHAR( 20 )、 LAST_NAME CHAR( 20 )、 セックスCHAR( 10 ) ); あなたは、テーブルのfirst_nameにおけるセットフィールドにしたい場合は、last_nameのデータを繰り返すことはできません、主キーを提供することができるデュアルモード設定データは、デュアルマスターキーの設定、そのキーのデフォルト値がNULLでない場合は、NOT NULLに設定することができる、ユニークです。次のとおりです。 TABLE person_tblのCREATE ( FIRST_NAME CHAR( 20 )NOT NULL、 LAST_NAME CHAR( 20 )NOT NULL、 セックスCHAR( 10 )、 PRIMARY KEY(LAST_NAME、FIRST_NAME) );
一意のインデックスが設定されている場合は、重複データを挿入するときに、SQLステートメントが正常に実行され、間違ってスローされることはありません。 違いINSERT INTOはやINSERT INTOをIGNORE INSERTは、データが存在する場合は何も、データベースのデータは、新しいデータを挿入し、その後、このデータをスキップしていない場合は、データベースにすでにデータを無視IGNOREています。これは、データベース内に既に隙間に挿入されたデータの目的は、データを保持します。 次の例INSERT INTOは、実行後なしエラーを無視使用し、データテーブルに重複したデータを挿入しません。 mysqlの > INSERT person_tbl(LAST_NAME、FIRST_NAME)INTO IGNORE - > VALUES(' ジェイ'、' トーマス' ); クエリOK、影響を受けた1行(0.00 秒) mysqlの > INSERT person_tbl(LAST_NAME、FIRST_NAME)INTO IGNORE - > VALUES(' ジェイ'、' トーマス' ); クエリOK、影響を受けた0行( 0.00 秒) 、記録の一意性に設けられている場合に挿入重複データ挿入のみ警告として、戻りエラーを返さない場合、INSERTは、データにIGNORE。同じプライマリまたは一意のレコードが存在する場合INTOをREPLACE、最初は削除しました。次に、新しいレコードを挿入します。 データを設定する別の方法は、以下のように、UNIQUEインデックスを追加するだけです: TABLE person_tblのCREATE ( FIRST_NAME CHAR( 20 )NOT NULL、 LAST_NAME CHAR( 20 )NOT NULL、 セックスCHAR( 10 )、 UNIQUE(LAST_NAME、FIRST_NAME) );
統計データの重複 以下の表記録のFIRST_NAME LAST_NAMEの繰り返し数: MySQLの > SELECT COUNT(* )繰り返し、LAST_NAME、FIRST_NAMEよう - > person_tbl FROM - > GROUP BYのLAST_NAME、FIRST_NAME - >反復> 1です。 上記のクエリは、重複レコードのperson_tblテーブル番号を返します。通常の状況下では、クエリ重複する値は、次の手順を実行します。 値が繰り返されてもよい含むカラム決定。 COUNT(使用したカラム選択リストに * )欄に掲げるものを。 GROUP BY句にリストされている列。 句セットを繰り返し数を有する1よりも大きいです。
あなたがデータを複製する必要がある場合は、重複データをフィルタリングするSELECT文でDISTINCTキーワードを使用して読み取ることができません。 mysqlの > DISTINCT LAST_NAME、FIRST_NAMEを選択 - > person_tbl FROM; GROUP BYはテーブル内のデータを読み取るために使用することができる重複しないデータの操作を行います。 MySQLの > SELECT LAST_NAME、FIRST_NAME - > person_tbl FROM - > GROUP BY(LAST_NAME、FIRST_NAME)。
あなたは、データテーブル内の重複データを削除したい場合は、次のSQLステートメントを使用することができます。 MySQLの > 表TMPのSELECT LAST_NAME、FIRST_NAME、person_tbl GROUP BY(LAST_NAME、FIRST_NAME、性別)から、性別を作成します。 mysqlの > DROP TABLEはperson_tbl。 MySQLの > ALTER TABLE TMP RENAME TOのperson_tbl。 もちろん、あなたはまた、テーブル内の重複データテーブルのレコードを削除するには、このような簡単な方法で、INDEX(インデックス)とPRIMAY KEY(主キー)を追加することができます。ここに方法は次のとおりです。 MySQLの > ALTER TABLEのperson_tblをIGNORE 、PRIMARY KEY(LAST_NAME、FIRST_NAME)を追加します- >