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 を使用して新しいスレッドを作成する方法
nginx プロセス モデルでは、トラフィック統計、トラフィック制御、データ共有などのタスクを完了す...
目次1. テレポート1.1 テレポートの紹介1.2 テレポートの使用1.3 プレビュー効果2. サス...
目次序文環境インストールMySQLコンテナを作成して起動する落とし穴を避けるための注意MySQLコン...
以前はaタグのname属性を使ってジャンプする方法しか知らなかったのですが、idも使えることを今日知...
目次1. LVS 負荷分散2. 負荷分散LVSの基本紹介3. LVSアーキテクチャ3.1 ロードバラ...
この記事ではMySQL 5.7.21のインストールと設定方法を記録しています。具体的な内容は以下のと...
セルの背景画像を設定でき、任意の GIF または JPEG 画像ファイルを使用できます。基本的な構文...
Docker は、あらゆるアプリケーション用の軽量でポータブルな自己完結型コンテナーを簡単に作成で...
テーブル タグの frame 属性と rules 属性は境界線の表示を制御できます。フレーム プロパ...
1. GraphVis 公式サイトにアクセスして、対応する js をダウンロードします。js の新し...
日付ピッカーをカプセル化する場合、選択時にフォントの色を暗くする必要があります。実装後の効果を見てみ...
目次概要同一生成元ポリシー (SOP)相同制限クロスドメインをバイパスクロスサイトリクエストフォージ...
ウェブページ上の画像が一般的に jpg、gif、png 形式であることは誰もが知っています。それらの...
序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...
導入前回の記事では、Redis をインストールして設定しましたが、まだ終わりではありません。PHP ...