mysql countの詳細な説明 count関数はテーブルや配列内のレコードを数えるために使われます。ここではMySQLでのcount関数の使い方を紹介します。 count(*) NULL 値が含まれているかどうかに関係なく、取得した行の数を返します。 SELECT が他の列を取得せずに 1 つのテーブルから取得し、WHERE 句がない場合、COUNT(*) は最速の速度を返すように最適化されます。 例えば: mysql> SELECT COUNT(*) FROM student; COUNT(DISTINCT フィールド) この最適化は MyISAM テーブルにのみ適用されます。これらのテーブル タイプは関数によって返されるレコードの正確な数を格納し、アクセスが非常に簡単だからです。 トランザクション ストレージ エンジン (InnoDB、BDB) の場合、複数のトランザクションが発生し、それぞれが行数に影響する可能性があるため、正確な行数を保存することはより困難です。 NULL 以外の異なる値の数を返します。 一致する項目が見つからない場合、COUNT(DISTINCT) は 0 を返します。 例 カウント データ統計を実行するためのテスト用のデータ テーブルを作成します。 テーブル `user` を作成します ( `id` int(5) 符号なし NOT NULL AUTO_INCREMENT, `name` varchar(10) デフォルト NULL, `password` varchar(10) デフォルト NULL, 主キー (`id`) ) ENGINE=MyISAM AUTO_INCREMENT=4 デフォルトCHARSET=latin1 テストデータは次のとおりです。 1 名前1 123456 2 名前2 123456 3 名前3 123456 4 名前4 NULL 次のクエリによって返される結果に注意してください `user` から count(*) を選択する `user` から count(name) を選択する `user` から count(password) を選択します 出力: 4,4,3 原因分析: 1. count(*) は行数をカウントするので、結果は 4 になります。 2. count(column_name) は、列内の空でない行をカウントします。したがって、count(name)=4、count(password)=3 になります。 count関数を使用する際は、上記2点に注意してください。 GROUP BY を使用して、各所有者のすべてのレコードをグループ化します。これがないと、次のエラー メッセージが表示されます。 mysql> SELECT 所有者、COUNT(*) FROM ペット; エラー 1140 (42000): GROUP 列 (MIN()、MAX()、COUNT()、...) が混在しています GROUP BY句がない場合、GROUP列なしでは不正です。 COUNT() と GROUP BY はさまざまな方法でデータを並べ替えます。次の例は、動物の調査を実施するさまざまな方法を示しています。 各動物の数: mysql> SELECT seeds, COUNT(*) FROM pet GROUP BY seeds; +---------+-----------+ | 種 | COUNT(*) | +---------+-----------+ | 鳥 | 2 | | 猫 | 2 | | 犬 | 3 | | ハムスター | 1 | | ヘビ | 1 | +---------+-----------+ 性別ごとの動物の数: mysql> SELECT sex, COUNT(*) FROM pet GROUP BY sex; +------+----------+ | 性別 | COUNT(*) | +------+----------+ | NULL | 1 | | 4 | | メートル | 4 | +------+----------+ (この出力では、NULL は「性別不明」を意味します。) 種と性別別の動物の数: mysql> SELECT 種、性別、COUNT(*) FROM pet GROUP BY 種、性別; +---------+------+----------+ | 種 | 性別 | COUNT(*) | +---------+------+----------+ | 鳥 | NULL | 1 | | 鳥 | f | 1 | | 猫 | f | 1 | | 猫 | m | 1 | | 犬 | f | 1 | | 犬 | 男性 | 2 | | ハムスター | f | 1 | | ヘビ | m | 1 | +---------+------+----------+ COUNT() を使用すると、テーブル全体を検索する必要がなくなります。たとえば、前のクエリを犬と猫のみに実行すると、次のようになります。 mysql> SELECT 種、性別、COUNT(*) FROM ペット -> WHERE 種 = '犬' または 種 = '猫' -> GROUP BY 種、性別; +---------+------+----------+ | 種 | 性別 | COUNT(*) | +---------+------+----------+ | 猫 | f | 1 | | 猫 | m | 1 | | 犬 | f | 1 | | 犬 | 男性 | 2 | +---------+------+----------+ または、性別がわかっている動物の性別ごとの数だけが必要な場合は、次のようにします。 mysql> SELECT 種、性別、COUNT(*) FROM ペット -> 性別がNULLではない場合 -> GROUP BY 種、性別; +---------+------+----------+ | 種 | 性別 | COUNT(*) | +---------+------+----------+ | 鳥 | f | 1 | | 猫 | f | 1 | | 猫 | m | 1 | | 犬 | f | 1 | | 犬 | 男性 | 2 | | ハムスター | f | 1 | | ヘビ | m | 1 | +---------+------+----------+ ちなみに、MySQL の DISTINCT キーワードには、予想もしなかった多くの用途があります。 1. ユニークなレコードをカウントするときに使用できます たとえば、 SELECT COUNT( DISTINCT id ) FROM tablename; talbebnameテーブル内の異なるIDを持つレコードの数を計算することです 2. 異なるIDの特定の値を返す必要がある場合は、 たとえば、 SELECT DISTINCT id FROM tablename; talbebnameテーブル内の異なるIDの特定の値を返します 3. 上記の状況2は、MySQLテーブルから2列以上の結果を返す必要がある場合には曖昧になります。 たとえば、 SELECT DISTINCT id, type FROM tablename; 実際に返される結果は、id と type が同時に異なるというものです。つまり、DISTINCT は 2 つのフィールドに同時に作用し、同じ id と type を持つフィールドのみが除外されます。これは、予想した結果とは異なります。 4. 現時点では、group_concat関数を使用して除外することを検討できますが、このMySQL関数はMySQL 4.1以降でのみサポートされています。 5. 実は、別の解決策があります。 SELECT id、type、count(DISTINCT id) FROM テーブル名 返される結果には役に立たないカウントデータの列が追加されますが(おそらく、私が言及したこの役に立たないデータが必要なのでしょう) 返される結果は、異なる ID を持つすべての結果です。上記の 4 つのタイプは、相互に補完的に使用できます。必要なデータの種類によって異なります。 読んでいただきありがとうございます。お役に立てれば幸いです。このサイトをサポートしていただきありがとうございます。 以下もご興味があるかもしれません:
|
<<: Windows で IP アドレスを指定してサーバーへのリモート アクセスを設定する方法
>>: nodejs で worker_threads を使用して新しいスレッドを作成する方法
InnoDB インデックスの物理構造すべての InnoDB インデックスは Btree インデックス...
MySQL ログ システムで最も重要なログは、REDO ログとアーカイブ ログです。後者は MySQ...
CSS 表示プロパティ注: !DOCTYPE が指定されている場合、Internet Explore...
背景レプリケーションはデータの完全なコピーです。レプリケーションが必要な理由として、まず思い浮かぶの...
1. libfastcommon-1.0.43 をインストールします。インストール パッケージは h...
ブラウザはおそらく私たちにとって最も馴染みのあるツールです。 Firefox、Opera、Safar...
ユーザーが登録すると、ラベルをクリックして確認コードを変更します。クリックするとラベルに影の部分がで...
ユニークな「About」ページ自分を他の人たちと差別化する素晴らしい方法は、本当にユニークな自己紹介...
仮想マシンは使用中であるか、接続できません次のようなエラーが報告された場合解決まずこのページにアクセ...
目次1. 基本的な環境設定2. データベースをインストールする3. zabbix関連コンポーネントを...
HTMLとは何ですか?簡単に言えば、HTML は Web ページを作成するために使用されます。とて...
0 アイコンと画像の違いアイコンは文字であり、画像はバイナリ ストリームです。つまり、画像はアイコン...
MySQL エラー:エラー コード: 1293 テーブル定義が正しくありません。CURRENT_T...
この記事では、libudev ライブラリを使用して hidraw デバイスにアクセスします。 lib...
序文コードを書く過程で、必然的にコードに何らかの変更を加えることになります。しかし、変更を加えるとき...