ホームページ >データベース >mysql チュートリアル >mysqlで重複データを削除する方法

mysqlで重複データを削除する方法

青灯夜游
青灯夜游オリジナル
2022-01-05 12:05:3761427ブラウズ

mysql では、「SELECT」ステートメントと「DISTINCT」キーワードを使用して重複排除クエリを実行し、重複データをフィルターで除外できます。構文は「SELECT DISTINCT フィールド名 FROM データ テーブル名;」です。

mysqlで重複データを削除する方法

このチュートリアルの動作環境: 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。