ホームページ >データベース >mysql チュートリアル >mysqlで重複データを削除する方法
mysql では、「SELECT」ステートメントと「DISTINCT」キーワードを使用して重複排除クエリを実行し、重複データをフィルターで除外できます。構文は「SELECT DISTINCT フィールド名 FROM データ テーブル名;」です。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
SELECT
ステートメントを使用して MySQL で単純なデータ クエリを実行すると、一致するすべてのレコードが返されます。テーブル内の一部のフィールドに一意の制約がない場合、これらのフィールドに重複した値が存在する可能性があります。重複しないデータをクエリするために、MySQL は DISTINCT
キーワードを提供します。
DISTINCT キーワードの主な機能は、データ テーブル内の 1 つ以上のフィールドの重複データをフィルターし、1 つのデータのみをユーザーに返すことです。
DISTINCT キーワードの構文形式は次のとおりです:
SELECT DISTINCT <字段名> FROM <表名>;
このうち、「フィールド名」は重複レコードを削除する必要があるフィールドの名前です。複数のフィールドがある場合は、カンマで区切ります。
DISTINCT キーワードを使用するときは、次の点に注意する必要があります。
DISTINCT キーワードは、SELECT ステートメントでのみ使用できます。
1 つ以上のフィールドの重複を排除する場合、DISTINCT キーワードをすべてのフィールドの先頭に置く必要があります。
DISTINCT キーワードの後に複数のフィールドがある場合、複数のフィールドの組み合わせがまったく同じである場合にのみ、複数のフィールドが結合されて重複が排除されます。重複排除されました。
#例
以下では、特定の例を使用して、重複しないデータをクエリする方法を説明します。 テスト データベースの Student テーブルのテーブル構造とデータは次のとおりです。mysql> SELECT * FROM test.student; +----+----------+------+-------+ | id | name | age | stuno | +----+----------+------+-------+ | 1 | zhangsan | 18 | 23 | | 2 | lisi | 19 | 24 | | 3 | wangwu | 18 | 25 | | 4 | zhaoliu | 18 | 26 | | 5 | zhangsan | 18 | 27 | | 6 | wangwu | 20 | 28 | +----+----------+------+-------+ 6 rows in set (0.00 sec)結果は、Student テーブルに 6 つのレコードがあることを示しています。 学生テーブルの年齢フィールドは重複排除されています。SQL ステートメントと実行結果は次のとおりです:
mysql> SELECT DISTINCT age FROM student; +------+ | age | +------+ | 18 | | 19 | | 20 | +------+ 3 rows in set (0.00 sec)学生テーブルの名前と年齢フィールドは重複排除されています。SQL ステートメントと実行結果は次のとおりです。結果は次のとおりです: :
mysql> SELECT DISTINCT name,age FROM student; +----------+------+ | name | age | +----------+------+ | zhangsan | 18 | | lisi | 19 | | wangwu | 18 | | zhaoliu | 18 | | wangwu | 20 | +----------+------+ 5 rows in set (0.00 sec)Student テーブル内のすべてのフィールドの重複を除去します。SQL ステートメントと実行結果は次のとおりです:
mysql> SELECT DISTINCT * FROM student; +----+----------+------+-------+ | id | name | age | stuno | +----+----------+------+-------+ | 1 | zhangsan | 18 | 23 | | 2 | lisi | 19 | 24 | | 3 | wangwu | 18 | 25 | | 4 | zhaoliu | 18 | 26 | | 5 | zhangsan | 18 | 27 | | 6 | wangwu | 20 | 28 | +----+----------+------+-------+ 6 rows in set (0.00 sec)DISTINCT はターゲット フィールドのみを返すことができ、他のフィールドは返すことができないため実際の状況では、一意のフィールドの数を返すために DISTINCT キーワードを使用することがよくあります。 student テーブルの名前フィールドと年齢フィールドの重複排除後のレコード数をクエリします。SQL ステートメントと実行結果は次のとおりです:
mysql> SELECT COUNT(DISTINCT name,age) FROM student; +--------------------------+ | COUNT(DISTINCT name,age) | +--------------------------+ | 5 | +--------------------------+ 1 row in set (0.01 sec)結果は、名前フィールドと年齢フィールドがStudent テーブルのレコードは重複排除され、その後に 5 つのレコードが存在します。 [関連する推奨事項:
mysql ビデオ チュートリアル ]
以上がmysqlで重複データを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。