Maison  >  Article  >  base de données  >  Quelle est la différence entre SELECT DISTINCT et GROUP BY dans MySQL ?

Quelle est la différence entre SELECT DISTINCT et GROUP BY dans MySQL ?

WBOY
WBOYavant
2023-09-18 23:53:071214parcourir

MySQL 中 SELECT DISTINCT 与 GROUP BY 的区别?

SELECT DISTINCT peut être utilisé pour donner différentes valeurs. Utilisez-le pour supprimer les enregistrements en double et Il peut également être utilisé avec des fonctions d'agrégation. Par exemple : MAX, AVG, etc. Ceci peut être appliqué sur une seule colonne.

En ce moment, je crée un tableau pour utiliser SELECT DISTINCT sur les colonnes. Créer un tableau Aide pour la commande CREATE -

mysql> CREATE TABLE DistinctDemo
-> (
-> id int,
-> name varchar(100)
-> );
Query OK, 0 rows affected (0.64 sec)

Insérer des enregistrements -

mysql> INSERT into DistinctDemo values(1,'John');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(2,'John');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into DistinctDemo values(3,'Bob');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(4,'John');
Query OK, 1 row affected (0.15 sec)

mysql> INSERT into DistinctDemo values(5,'David');
Query OK, 1 row affected (0.17 sec)

mysql> INSERT into DistinctDemo values(6,'Bob');
Query OK, 1 row affected (0.16 sec)

Afficher tous les enregistrements à l'aide de la commande SELECT. La requête est la suivante -

mysql> SELECT * from DistinctDemo;

Après avoir exécuté la requête ci-dessus, nous obtiendrons le résultat suivant −

+------+-------+
| id   | name  |
+------+-------+
| 1    | John  |
| 2    | John  |
| 3    | Bob   |
| 4    | John  |
| 5    | David |
| 6    | Bob   |
+------+-------+
6 rows in set (0.00 sec)

Ci-dessus, nous avons six enregistrements dans lesquels John et Bob sont des doublons. Nous pouvons appliquer DISTINCT à Supprimez les enregistrements en double. La syntaxe est la suivante -

SELECT distinctcolumn_name from yourTableName order by column_name;

Maintenant, j'applique la requête ci-dessus pour supprimer les doublons -

mysql> SELECT distinct name from DistinctDemo;

Ci-dessous se trouve le résultat

+-------+
| name  |
+-------+
| John  |
| Bob   |
| David |
+-------+
3 rows in set (0.00 sec)

Sélectionner le groupe par peut être utilisé pour obtenir des données de différentes colonnes et les regrouper en une ou plusieurs colonne. Cela peut également être appliqué avec la fonction d'agrégation. Par exemple : SUM, AVG etc.

Tout d'abord, je crée une table avec l'aide de la commande CREATE -

. colonne Cela peut également être utilisé avec des fonctions d’agrégation. Par exemple : SOMME, AVG, etc.

Tout d'abord, je crée une table à l'aide de la commande CREATE −

mysql> CREATE table GroupDemo1
-> (
-> id int,
-> name varchar(100),
-> address varchar(100)
-> );
Query OK, 0 rows affected (0.68 sec)

Après avoir créé la table, j'insère les enregistrements dans la table comme indiqué ci-dessous −

mysql> INSERT into GroupDemo1 values(1,'John','US');
Query OK, 1 row affected (0.18 sec)

mysql> INSERT into GroupDemo1 values(2,'Bob','UK');
Query OK, 1 row affected (0.13 sec)

mysql> INSERT into GroupDemo1 values(3,'David','US');
Query OK, 1 row affected (0.12 sec)

mysql> INSERT into GroupDemo1 values(4,'David','US');
Query OK, 1 row affected (0.15 sec)

Maintenant, nous pouvons afficher tous les enregistrements à l'aide de la commande SELECT −

mysql> SELECT * from GroupDemo1;

Ce qui suit sont les résultats -

+------+-------+---------+
| id   | name  | address |
+------+-------+---------+
| 1    | John  | US      |
| 2    | Bob   | UK      |
| 3    | David | US      |
| 4    | David | US      |
+------+-------+---------+
4 rows in set (0.00 sec)

J'appliquerai GROUP BY pour savoir combien de fois la même adresse se produit. C'est ici Syntaxe −

SELECT column_name1,......N aggregate function( ) from yourTableName group by
column_name;

Appliquons la syntaxe ci-dessus à GROUP BY -

mysql> SELECT address, count(*) from GroupDemo1 group by address;

Ce qui suit est le résultat -

+---------+----------+
| address | count(*) |
+---------+----------+
| US      | 3        |
| UK      | 1        |
+---------+----------+
2 rows in set (0.00 sec)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer
Article précédent:Aide du serveur client MySQLArticle suivant:Aide du serveur client MySQL