In MySQL wird die have-Klausel zum Filtern verschiedener Daten nach der Gruppierung verwendet. Sie wird normalerweise in Verbindung mit „group by“ verwendet. Diese Anweisung gleicht den Mangel aus, dass das Schlüsselwort where nicht in Verbindung mit Aggregatfunktionen verwendet werden kann.
Die Betriebsumgebung dieses Tutorials: Windows10-System, MySQL8.0.22-Version, Dell G3-Computer.
Der Grund für das Hinzufügen der HAVING-Klausel in SQL ist, dass das Schlüsselwort WHERE nicht mit Aggregatfunktionen verwendet werden kann. Mit der
HAVING-Klausel können wir jede Datengruppe nach der Gruppierung filtern.
SQL MIT Syntax
SELECT column_name, aggregate_function(column_name) FROM table_name WHERE column_name operator value GROUP BY column_name HAVING aggregate_function(column_name) operator value;
Demodatenbank
In diesem Tutorial verwenden wir die RUNOOB-Beispieldatenbank.
Das Folgende sind die Daten, die aus der Tabelle „Websites“ ausgewählt wurden:
+----+--------------+---------------------------+-------+---------+ | id | name | url | alexa | country | +----+--------------+---------------------------+-------+---------+ | 1 | Google | https://www.google.cm/ | 1 | USA | | 2 | 淘宝 | https://www.taobao.com/ | 13 | CN | | 3 | 菜鸟教程 | http://www.runoob.com/ | 4689 | CN | | 4 | 微博 | http://weibo.com/ | 20 | CN | | 5 | Facebook | https://www.facebook.com/ | 3 | USA | | 7 | stackoverflow | http://stackoverflow.com/ | 0 | IND | +----+---------------+---------------------------+-------+---------+
Das Folgende sind die Daten aus der Website-Zugriffsdatensatztabelle „access_log“:
mysql> SELECT * FROM access_log; +-----+---------+-------+------------+ | aid | site_id | count | date | +-----+---------+-------+------------+ | 1 | 1 | 45 | 2016-05-10 | | 2 | 3 | 100 | 2016-05-13 | | 3 | 1 | 230 | 2016-05-14 | | 4 | 2 | 10 | 2016-05-14 | | 5 | 5 | 205 | 2016-05-14 | | 6 | 4 | 13 | 2016-05-15 | | 7 | 3 | 220 | 2016-05-15 | | 8 | 5 | 545 | 2016-05-16 | | 9 | 3 | 201 | 2016-05-17 | +-----+---------+-------+------------+ 9 rows in set (0.00 sec)
SQL HAVING-Instanz
Jetzt möchten wir Websites mit der Gesamtzahl der Besuche finden größer als 200.
Wir verwenden die folgende SQL-Anweisung:
SELECT Websites.name, Websites.url, SUM(access_log.count) AS nums FROM (access_log INNER JOIN Websites ON access_log.site_id=Websites.id) GROUP BY Websites.name HAVING SUM(access_log.count) > 200;
Führen Sie die obige SQL aus und das Ausgabeergebnis ist wie folgt:
Empfohlenes Lernen: MySQL-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas nützt es, in MySQL zu haben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!