Dalam MySQL, klausa mempunyai digunakan untuk menapis pelbagai data selepas pengumpulan Ia biasanya digunakan bersama dengan "kumpulan mengikut". dengan fungsi agregat.
Persekitaran pengendalian tutorial ini: sistem Windows 10, versi mysql8.0.22, komputer Dell G3.
Sebab untuk menambah klausa HAVING dalam SQL ialah kata kunci WHERE tidak boleh digunakan dengan fungsi agregat.
Klausa HAVING membolehkan kami menapis setiap kumpulan data selepas dikumpulkan.
SQL HAVING 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;
Pangkalan data demo
Dalam tutorial ini, kami akan menggunakan pangkalan data sampel RUNOOB.
Berikut ialah data yang dipilih daripada jadual "Laman Web":
+----+--------------+---------------------------+-------+---------+ | 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 | +----+---------------+---------------------------+-------+---------+
Berikut ialah data daripada jadual rekod akses tapak web "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 instance
Kini kami ingin mencari tapak web dengan jumlah lawatan melebihi 200.
Kami menggunakan pernyataan SQL berikut:
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;
Hasil output untuk melaksanakan SQL di atas adalah seperti berikut:
Disyorkan pembelajaran: tutorial video mysql
Atas ialah kandungan terperinci Apakah kegunaan mempunyai dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!