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 を使用して新しいスレッドを作成する方法
ブーストをインストールPython から C/C++ を呼び出す方法はたくさんあります。この記事では...
データベーステーブルA: テーブル task_desc_tab を作成します ( id INT(11...
MySQL binlog は MySQL ログの中で非常に重要なログであり、データベースのすべての ...
jsx/tsxファイルを直接作成できます今回のプロジェクト構成は以下のとおりです。 vueファイルで...
この記事では、CSS で放射状グラデーションを使用して、次の図に示すクーポン スタイルの効果を実現す...
目次01 問題の説明02 ソリューション1. 他のスレーブライブラリを見つけてすぐに置き換える2. ...
1. Docker とは何ですか?仮想マシンについては誰もが知っています。Windows に Li...
1. データを準備するこのテーブルでは次の操作が実行されます 学生テーブルを作成 ( id int ...
この記事では、簡単なドラッグ効果を実現するためのJavaScriptの具体的なコードを参考までに紹介...
1. ドキュメントフローとフローティング1. ドキュメントフローとは何ですか? HTML では、ドキ...
序文Samba は、サーバー プログラムとクライアント プログラムで構成され、Linux システム上...
序文私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさま...
最近、「フロントエンドキャッシュ」という新しい要件が作成されました要件背景: フォームへの高頻度の繰...
HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...
序文SQL モードは、MySQL がサポートする SQL 構文と、実行されるデータ検証チェックに影響...