In MySQL können Sie die Anweisung „SELECT“ und das Schlüsselwort „DISTINCT“ verwenden, um Deduplizierungsabfragen durchzuführen und doppelte Daten herauszufiltern. Die Syntax lautet „SELECT DISTINCT field name FROM data table name;“.
Die Betriebsumgebung dieses Tutorials: Windows7-System, MySQL8-Version, Dell G3-Computer.
Verwenden Sie das SchlüsselwortSELECT
语句执行简单的数据查询时,返回的是所有匹配的记录。如果表中的某些字段没有唯一性约束,那么这些字段就可能存在重复值。为了实现查询不重复的数据,MySQL 提供了DISTINCT
in MySQL.
Die Hauptfunktion des DISTINCT-Schlüsselworts besteht darin, doppelte Daten in einem oder mehreren Feldern in der Datentabelle zu filtern und nur ein Datenelement an den Benutzer zurückzugeben. Das Syntaxformat des Schlüsselworts
DISTINCT lautet:
SELECT DISTINCT <字段名> FROM <表名>;
Unter diesen ist „Feldname“ der Name des Feldes, das doppelte Datensätze entfernen muss. Wenn mehrere Felder vorhanden sind, trennen Sie diese durch Kommas.
Bei der Verwendung des Schlüsselworts DISTINCT müssen Sie folgende Punkte beachten:
Das Schlüsselwort DISTINCT kann nur in einer SELECT-Anweisung verwendet werden.
Beim Deduplizieren eines oder mehrerer Felder muss das Schlüsselwort DISTINCT an der Spitze aller Felder stehen.
Wenn nach dem Schlüsselwort DISTINCT mehrere Felder vorhanden sind, werden die mehreren Felder kombiniert und dedupliziert. Das heißt, nur wenn die Kombination mehrerer Felder genau gleich ist, werden sie dedupliziert.
Beispiel
Im Folgenden wird anhand eines konkreten Beispiels veranschaulicht, wie nicht duplizierte Daten abgefragt werden.
Die Tabellenstruktur und die Daten der Schülertabelle in der Testdatenbank lauten wie folgt:
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)
Die Ergebnisse zeigen, dass die Schülertabelle 6 Datensätze enthält.
Das Folgende ist, um das Altersfeld der Schülertabelle zu deduplizieren. Die SQL-Anweisung und das laufende Ergebnis lauten wie folgt:
mysql> SELECT DISTINCT age FROM student; +------+ | age | +------+ | 18 | | 19 | | 20 | +------+ 3 rows in set (0.00 sec)
Die Namens- und Altersfelder der Schülertabelle werden wie folgt dedupliziert :
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)
Für die Schülertabelle werden alle Felder dedupliziert. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:
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)
Da DISTINCT nur sein Zielfeld und keine anderen Felder zurückgeben kann, verwenden wir in tatsächlichen Situationen häufig DISTINCT Schlüsselwort, um eindeutige Felder mit der Anzahl der Elemente zurückzugeben.
Fragen Sie die Anzahl der Datensätze in der Schülertabelle nach der Deduplizierung der Namens- und Altersfelder ab. Die SQL-Anweisung und die laufenden Ergebnisse lauten wie folgt:
mysql> SELECT COUNT(DISTINCT name,age) FROM student; +--------------------------+ | COUNT(DISTINCT name,age) | +--------------------------+ | 5 | +--------------------------+ 1 row in set (0.01 sec)
Die Ergebnisse zeigen, dass nach der Deduplizierung des Namens 5 Datensätze in der Schülertabelle vorhanden sind und Altersfelder.
【Verwandte Empfehlung:MySQL-Video-Tutorial】
Das obige ist der detaillierte Inhalt vonSo entfernen Sie doppelte Daten in MySQL. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!