Rumah >pangkalan data >tutorial mysql >Bagaimana untuk membuat pertanyaan dan mengira kuantiti dalam mysql
Dalam mysql, anda boleh menggunakan pernyataan SELECT untuk menanyakan data, dan menggunakan fungsi COUNT() untuk mengira bilangan hasil pertanyaan Sintaks ialah "SELECT COUNT(*) FROM table name [... ];" atau "PILIH COUNT (nama medan) DARI nama jadual[...];".
Persekitaran pengendalian tutorial ini: sistem windows7, versi mysql8, komputer Dell G3.
Dalam mysql, anda boleh menggunakan pernyataan SELECT untuk menanyakan data, dan menggunakan fungsi COUNT() untuk mengira bilangan hasil pertanyaan. Format tatabahasa
SELECT
adalah seperti berikut:
SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator> <expression>}…]] [ORDER BY <order by definition>] [LIMIT[<offset>,] <row count>] ]
Antaranya, maksud setiap klausa adalah seperti berikut:
{*|91f4a644069eb08f05815c14fcb8b2df}
Senarai medan yang mengandungi aksara kad bebas asterisk, yang menunjukkan nama medan yang hendak disoal.
1db5ee5e96c8774919312b86ea1e4ece,e612022ea012f486e2b8f4eb394bb6e0…
, Jadual 1 dan Jadual 2 mewakili sumber data pertanyaan, yang boleh tunggal atau berbilang.
WHERE a8db8f1ba937e93d98acf65ecbbdce13
adalah pilihan Jika dipilih, data pertanyaan mesti memenuhi syarat pertanyaan.
GROUP BY628258a999ccbeb31a9b66d6d3301cc9
, klausa ini memberitahu MySQL cara memaparkan data yang ditanya dan mengumpulkannya mengikut medan yang ditentukan.
[ORDER BY628258a999ccbeb31a9b66d6d3301cc9]
, klausa ini memberitahu MySQL dalam susunan apa untuk memaparkan data yang ditanyakan ialah tertib menaik (ASC) dan tertib menurun (DESC) Secara lalai Ia dalam menaik pesanan.
[LIMIT[ab76cfca1a1dc7ff1291dcdf873f72ec,]bc984d207842008469e14f06321b6461]
, klausa ini memberitahu MySQL untuk memaparkan bilangan item data yang ditanya setiap kali.
COUNT()
Fungsi mengira jumlah bilangan baris rekod yang terkandung dalam jadual data, atau mengembalikan bilangan baris data yang terkandung dalam lajur berdasarkan hasil pertanyaan
COUNT(*)
Kira jumlah bilangan baris dalam jadual, tidak kira sama ada lajur mempunyai nilai atau nilai nol.
COUNT(表达式)
Mengira bilangan baris yang tidak mengandungi nilai NULL
.
COUNT(DISTINCT 表达式)
Mengembalikan bilangan baris unik yang tidak mengandungi nilai NULL
Jenis pulangan COUNT() fungsi ialah BIGINT
. Jika tiada baris yang sepadan ditemui, fungsi COUNT() mengembalikan 0
.
Mari kita buat jadual baharu bernama demo
dan masukkan beberapa sampel data.
USE testdb; -- create a demos table CREATE TABLE IF NOT EXISTS demos( id int auto_increment primary key, val int ); -- insert some sample data INSERT INTO demos(val) VALUES(1),(1),(2),(2),(NULL),(3),(4),(NULL),(5); -- select data from demos table SELECT * FROM demos;
Laksanakan pernyataan pertanyaan di atas dan dapatkan keputusan berikut-
+----+------+ | id | val | +----+------+ | 1 | 1 | | 2 | 1 | | 3 | 2 | | 4 | 2 | | 5 | NULL | | 6 | 3 | | 7 | 4 | | 8 | NULL | | 9 | 5 | +----+------+ 9 rows in set
Untuk mengira semua baris dalam jadual demos
, gunakan fungsi COUNT(*)
seperti berikut:
mysql> SELECT COUNT(*) FROM demos; +----------+ | COUNT(*) | +----------+ | 9 | +----------+ 1 row in set
Anda boleh menambah klausa WHERE
untuk menentukan syarat untuk dikira, sebagai contoh, untuk mengira baris sahaja di mana lajur val
mengandungi nilai yang sama dengan 2
, gunakan pertanyaan berikut:
mysql> SELECT COUNT(*) FROM demos WHERE val = 2; +----------+ | COUNT(*) | +----------+ | 2 | +----------+ 1 row in set
Jika lajur COUNT
ditentukan dalam fungsi val
, fungsi COUNT
mengira semua baris yang lajurnya val
mengandungi hanya nilai bukanNULL
. Lihat pertanyaan berikut: Dua nilai
SELECT COUNT(*) FROM demos WHERE val = 2;
val
NULL
akan diabaikan.
Untuk mengira baris unik dalam jadual demos
, anda boleh menambah operator DISTINCT
pada fungsi COUNT
, seperti berikut:
SELECT COUNT(DISTINCT val) FROM demos;
Laksanakan pernyataan pertanyaan di atas , Dapatkan hasil berikut -
mysql> SELECT COUNT(DISTINCT val) FROM demos; +---------------------+ | COUNT(DISTINCT val) | +---------------------+ | 5 | +---------------------+ 1 row in set
mengabaikan dua nilai pendua 1
, 2
dan dua nilai NULL
dalam kiraan.
Kami sering menggunakan fungsi COUNT
dalam kombinasi dengan klausa GROUP BY
untuk mengira data dalam kumpulan yang berbeza. Lihat struktur jadual products
di bawah -
mysql> desc products; +--------------------+---------------+------+-----+---------+------------------+ | Field | Type | Null | Key | Default | Extra | +--------------------+---------------+------+-----+---------+------------------+ | productCode | varchar(15) | NO | PRI | | | | productName | varchar(70) | NO | MUL | NULL | | | productLine | varchar(50) | NO | MUL | NULL | | | productScale | varchar(10) | NO | | NULL | | | productVendor | varchar(50) | NO | | NULL | | | productDescription | text | NO | | NULL | | | quantityInStock | smallint(6) | NO | | NULL | | | buyPrice | decimal(10,2) | NO | | NULL | | | MSRP | decimal(10,2) | NO | | NULL | | | stockValue | double | YES | | NULL | STORED GENERATED | +--------------------+---------------+------+-----+---------+------------------+ 10 rows in set
Contohnya, untuk mencari bilangan produk dalam setiap siri produk, anda boleh menggunakan fungsi COUNT
dengan klausa GROUP BY
, sebagai ditunjukkan dalam pertanyaan berikut:
SELECT productline, count(*) FROM products GROUP BY productline;
Laksanakan kod di atas dan dapatkan keputusan berikut -
mysql> SELECT productline, count(*) FROM products GROUP BY productline; +------------------+----------+ | productline | count(*) | +------------------+----------+ | Classic Cars | 38 | | Motorcycles | 13 | | Planes | 12 | | Ships | 9 | | Trains | 3 | | Trucks and Buses | 11 | | Vintage Cars | 24 | +------------------+----------+ 7 rows in set
Untuk mencari kuantiti produk yang disediakan oleh pembekal, sila gunakan pertanyaan berikut:
SELECT productvendor, count(*) FROM products GROUP BY productvendor;
Laksanakan kod di atas, dapatkan keputusan berikut -
mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor; +---------------------------+----------+ | productvendor | count(*) | +---------------------------+----------+ | Autoart Studio Design | 8 | | Carousel DieCast Legends | 9 | | Classic Metal Creations | 10 | | Exoto Designs | 9 | | Gearbox Collectibles | 9 | | Highway 66 Mini Classics | 9 | | Min Lin Diecast | 8 | | Motor City Art Classics | 9 | | Red Start Diecast | 7 | | Second Gear Diecast | 8 | | Studio M Art Models | 8 | | Unimax Art Galleries | 8 | | Welly Diecast Productions | 8 | +---------------------------+----------+ 13 rows in set
Untuk mencari pembekal mana yang menyediakan sekurang-kurangnya 9
produk, anda boleh menggunakan klausa HAVING
dalam Fungsi COUNT
, seperti yang ditunjukkan dalam pernyataan pertanyaan berikut :
SELECT productvendor, count(*) FROM products GROUP BY productvendor HAVING count(*) >= 9;
Laksanakan kod di atas dan dapatkan hasil berikut -
mysql> SELECT productvendor, count(*) FROM products GROUP BY productvendor HAVING count(*) >= 9; +--------------------------+----------+ | productvendor | count(*) | +--------------------------+----------+ | Carousel DieCast Legends | 9 | | Classic Metal Creations | 10 | | Exoto Designs | 9 | | Gearbox Collectibles | 9 | | Highway 66 Mini Classics | 9 | | Motor City Art Classics | 9 | +--------------------------+----------+ 6 rows in set
Anda boleh menggunakan fungsi aliran kawalan dalam fungsi COUNT
, sepertiIF
, IFNULL
, CASE
, dsb. untuk mengira baris yang nilainya sepadan dengan keadaan.
Sebagai contoh, pertanyaan berikut boleh mencari bilangan pesanan yang dibatalkan, digantung dan dipertikaikan:
SELECT COUNT(IF(status='Cancelled',1, NULL)) 'Cancelled', COUNT(IF(status='On Hold',1, NULL)) 'On Hold', COUNT(IF(status='Disputed',1, NULL)) 'Disputed' FROM orders;
Laksanakan kod di atas dan dapatkan keputusan berikut -
mysql> SELECT COUNT(IF(status='Cancelled',1, NULL)) 'Cancelled', COUNT(IF(status='On Hold',1, NULL)) 'On Hold', COUNT(IF(status='Disputed',1, NULL)) 'Disputed' FROM orders; +-----------+---------+----------+ | Cancelled | On Hold | Disputed | +-----------+---------+----------+ | 6 | 4 | 3 | +-----------+---------+----------+ 1 row in set
Fungsi IF akan kembali 1
jika status pesanan dibatalkan, Dipelihara atau Dipertikaikan, jika tidak NULL
akan dikembalikan. Fungsi COUNT
hanya mengira nilai 1
, bukan NULL
, jadi pertanyaan mengembalikan bilangan pesanan berdasarkan status yang sepadan.
[Cadangan berkaitan: tutorial video mysql]
Atas ialah kandungan terperinci Bagaimana untuk membuat pertanyaan dan mengira kuantiti dalam mysql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!