mysql では、SELECT ステートメントを使用してデータをクエリし、COUNT() 関数を使用してクエリ結果の数をカウントできます。構文は「SELECT COUNT(*) FROM table name [...」です。 ];" または "SELECT COUNT (フィールド名) FROM テーブル名[...];"。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
mysql では、SELECT ステートメントを使用してデータをクエリし、COUNT() 関数を使用してクエリ結果の数をカウントできます。
SELECT
の構文形式は次のとおりです。
SELECT {* | <字段列名>} [ FROM <表 1>, <表 2>… [WHERE <表达式> [GROUP BY <group by definition> [HAVING <expression> [{<operator> <expression>}…]] [ORDER BY <order by definition>] [LIMIT[<offset>,] <row count>] ]
このうち、各句の意味は次のとおりです。
{*|2a8f4768978479bb174c01bec73b0b64}
クエリ対象のフィールドの名前を示す、アスタリスク ワイルドカード文字を含むフィールド リスト。
##1db5ee5e96c8774919312b86ea1e4ece、e612022ea012f486e2b8f4eb394bb6e0…、表 1 と表 2 は、単一または複数のクエリ データのソースを表します。
WHERE ffbeece48539e6983ff3249db04f27c9 はオプションです。選択した場合、クエリ データはクエリ条件を満たす必要があります。
GROUP BY3b26370eed070b4e2af74808aa8f2dee、この句は、クエリされたデータを表示し、指定されたフィールドに従ってグループ化する方法を MySQL に指示します。
、この句はクエリされたデータを表示する順序を MySQL に指示します。実行可能な並べ替えは昇順 (ASC) ) と降順 (DESC)。デフォルトでは昇順です。
この関数は、データ テーブルに含まれるレコード行の総数をカウントするか、列に含まれるデータ行の数を返します。クエリ結果に基づく
NULL 値を含まない行の数をカウントします。
NULL 値を含まない一意の行の数を返します
0 を返します。
MySQL COUNT の例
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;
上記のクエリ ステートメントを実行すると、次の結果が得られます。
+----+------+ | id | val | +----+------+ | 1 | 1 | | 2 | 1 | | 3 | 2 | | 4 | 2 | | 5 | NULL | | 6 | 3 | | 7 | 4 | | 8 | NULL | | 9 | 5 | +----+------+ 9 rows in set
demos
テーブル内のすべての行をカウントするには、COUNT(*)# を使用してください。以下に示す ## 関数: <pre class="brush:js;toolbar:false;">mysql> SELECT COUNT(*) FROM demos;
+----------+
| COUNT(*) |
+----------+
| 9 |
+----------+
1 row in set</pre>
WHERE
句を追加して、カウントする条件を指定できます。たとえば、値を含む
列のみをカウントします。 ## と等しい 行 #2 については、次のクエリを使用します。
mysql> SELECT COUNT(*) FROM demos WHERE val = 2; +----------+ | COUNT(*) | +----------+ | 2 | +----------+ 1 row in set
val 列が
COUNT 関数で指定されている場合、 COUNT 関数は、
val 列に
NULL 以外の値のみが含まれるすべての行をカウントします。次のクエリを参照してください。
SELECT COUNT(*) FROM demos WHERE val = 2;
val 列の 2 つの
NULL 値は無視されます。 demos
テーブル内の一意の行をカウントするには、次のクエリのように、
DISTINCT
COUNT 関数に追加します。ステートメント:
SELECT COUNT(DISTINCT val) FROM demos;
上記のクエリ ステートメントを実行すると、次の結果が得られます。
mysql> SELECT COUNT(DISTINCT val) FROM demos; +---------------------+ | COUNT(DISTINCT val) | +---------------------+ | 5 | +---------------------+ 1 row in set
2 つの重複する値を無視します。
1、2
、およびカウント NULL 値に 2 つの 。
GROUP BY
を使用した MySQL COUNT さまざまなグループ内のデータをカウントするために、
COUNT
products テーブルの構造を参照してください -
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
たとえば、各製品ラインの製品数を確認するには、# を指定して
COUNT 関数を使用できます。次のクエリに示すように ##GROUP BY
句を使用します。 SELECT productline, count(*) FROM products GROUP BY productline;
上記のコードを実行すると、次の結果が得られます -<pre class="brush:html;toolbar:false;">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</pre>
サプライヤーから提供された製品の数量を確認するには、次のクエリを使用してください: <pre class="brush:js;toolbar:false;">SELECT productvendor, count(*) FROM products GROUP BY productvendor;</pre>
上記のコードを実行すると、次の結果が得られます-
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
少なくとも
9製品を提供しているサプライヤーを見つけるには、次のクエリ ステートメントに示すように、
COUNT関数の
HAVING 句: <pre class="brush:js;toolbar:false;">SELECT productvendor, count(*) FROM products GROUP BY productvendor
HAVING count(*) >= 9;</pre>
上記のコードを実行すると、次の結果が得られます-<pre class="brush:js;toolbar:false;">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</pre>
MySQL COUNT IF が使用可能
関数内の制御フロー関数 (
IF、CASE## など) # などを使用して、値が条件に一致する行をカウントします。
たとえば、次のクエリでは、キャンセルされた注文、一時停止された注文、および異議申し立て中の注文の数を確認できます。
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;
上記のコードを実行すると、次の結果が得られます。
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
If ステータス注文がキャンセル、予約、または異議申し立ての場合、IF 関数は
1 を返し、それ以外の場合は NULL
を返します。COUNT
関数はNULL 値ではなく
1 のみをカウントするため、クエリは対応するステータスに基づいて注文数を返します。
[関連する推奨事項:
mysql ビデオ チュートリアル ]
以上がmysqlで数量をクエリしてカウントする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。