Manchmal können sie zu den gleichen Ergebnissen führen, aber sie sind für unterschiedliche Zwecke/Fälle gedacht. Der Hauptunterschied liegt in der Syntax.
Beachten Sie das folgende Beispiel genau. DISTINCT
wird verwendet, um die doppelte Menge von Werten herauszufiltern. (6, cs, 9.1) und (1, cs, 5.5) sind zwei verschiedene Gruppen. Also DISTINCT
wird die beiden Zeilen anzeigen, während GROUP BY Branch
wird nur einen Satz anzeigen.
SELECT * FROM student;
+------+--------+------+
| Id | Branch | CGPA |
+------+--------+------+
| 3 | civil | 7.2 |
| 2 | mech | 6.3 |
| 6 | cs | 9.1 |
| 4 | eee | 8.2 |
| 1 | cs | 5.5 |
+------+--------+------+
5 rows in set (0.001 sec)
SELECT DISTINCT * FROM student;
+------+--------+------+
| Id | Branch | CGPA |
+------+--------+------+
| 3 | civil | 7.2 |
| 2 | mech | 6.3 |
| 6 | cs | 9.1 |
| 4 | eee | 8.2 |
| 1 | cs | 5.5 |
+------+--------+------+
5 rows in set (0.001 sec)
SELECT * FROM student GROUP BY Branch;
+------+--------+------+
| Id | Branch | CGPA |
+------+--------+------+
| 3 | civil | 7.2 |
| 6 | cs | 9.1 |
| 4 | eee | 8.2 |
| 2 | mech | 6.3 |
+------+--------+------+
4 rows in set (0.001 sec)
Manchmal können die Ergebnisse, die durch GROUP BY
Klausel kann nicht erreicht werden durch DISTINCT
ohne eine zusätzliche Klausel oder Bedingungen zu verwenden. Z.B. im obigen Fall.
Um das gleiche Ergebnis zu erzielen wie DISTINCT
müssen Sie alle Spaltennamen in GROUP BY
Klausel wie unten. Sie sehen also den syntaktischen Unterschied. Sie müssen alle Spaltennamen kennen, um sie zu verwenden GROUP BY
Klausel in diesem Fall.
SELECT * FROM student GROUP BY Id, Branch, CGPA;
+------+--------+------+
| Id | Branch | CGPA |
+------+--------+------+
| 1 | cs | 5.5 |
| 2 | mech | 6.3 |
| 3 | civil | 7.2 |
| 4 | eee | 8.2 |
| 6 | cs | 9.1 |
+------+--------+------+
Außerdem habe ich festgestellt GROUP BY
zeigt die Ergebnisse standardmäßig in aufsteigender Reihenfolge an. DISTINCT
nicht. Aber ich bin mir da nicht sicher. Es kann sein, dass sich die Anbieter unterscheiden.
Quelle: https://dbjpanda.me/dbms/languages/sql/sql-syntax-with-examples#group-by