Ist es möglich, „DISTINCT“- und „COUNT“-Abfragen zu kombinieren, sodass ich sehen kann, wie oft jeder einzelne Wert in einer MySQL-Tabellenspalte vorkommt?
Ja, Sie können die Aggregatfunktion COUNT(*) zusammen mit der GROUP BY-Klausel verwenden. Lassen Sie uns zunächst Folgendes erstellen:
mysql> create table DemoTable1425
-> (
-> JoiningYear int
-> );
Query OK, 0 rows affected (0.76 sec)
Fügen Sie mit insert einige Datensätze in die Tabelle ein:
mysql> insert into DemoTable1425 values(2000);
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable1425 values(2010);
Query OK, 1 row affected (0.24 sec)
mysql> insert into DemoTable1425 values(2015);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1425 values(2000);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1425 values(2010);
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable1425 values(2000);
Query OK, 1 row affected (0.11 sec)
mysql> insert into DemoTable1425 values(2010);
Query OK, 1 row affected (0.10 sec)
Zeigen Sie alle Datensätze aus der Tabelle mit select an:
mysql> select * from DemoTable1425;
Dadurch wird die folgende Ausgabe erzeugt:
+-------------+
| JoiningYear |
+-------------+
| 2000 |
| 2010 |
| 2015 |
| 2000 |
| 2010 |
| 2000 |
| 2010 |
+-------------+
7 rows in set (0.00 sec)
Es folgt die Abfrage, um zu sehen, wie oft jeder einzelne Wert vorkommt:
mysql> select JoiningYear,count(*) from DemoTable1425 group by JoiningYear;
Dadurch wird die folgende Ausgabe erzeugt:
+-------------+----------+
| JoiningYear | count(*) |
+-------------+----------+
| 2000 | 3 |
| 2010 | 3 |
| 2015 | 1 |
+-------------+----------+
3 rows in set (0.00