ホームページ >データベース >mysql チュートリアル >単一の SQL クエリで複数のテーブルから個別のカウントを取得するにはどうすればよいですか?

単一の SQL クエリで複数のテーブルから個別のカウントを取得するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-11 13:47:43919ブラウズ

How to Get Separate Counts from Multiple Tables in a Single SQL Query?

*SELECT COUNT()**

複数のテーブルから

データベース テーブルを操作する場合、複数のテーブルからカウントを取得し、結果を別の列として表示する必要がある場合があります。 2 つの異なるテーブル (tab1 と tab2) からカウントを取得しようとすると、一般的な問題が発生します。

あなたが言及した UNION ALL を使用するのが一般的な方法です。ただし、この方法では、列が 1 つだけ含まれる結果セットが生成され、カウントが次々に表示されます。

この制限を克服してカウントを別の列に表示するには、別の SQL アプローチが必要です。

<code class="language-sql">SELECT  (
        SELECT COUNT(*)
        FROM   tab1
        ) AS count1,
        (
        SELECT COUNT(*)
        FROM   tab2
        ) AS count2
FROM    dual</code>

このクエリでは、SELECT ステートメントに 2 つのサブクエリが含まれています:

  • 最初のサブクエリ (かっこで囲まれたもの) は tab1 から COUNT(*) を取得し、それを別名 count1 に割り当てます。
  • 2 番目のサブクエリ (これも括弧で囲まれています) は tab2 に対して同じことを行いますが、それを count2 に割り当てます。

FROM 句は、Oracle データベースの仮想テーブルであるデュアル テーブルを使用し、常に 1 つの列のみを含む 1 行のデータを返します。これは、両方のサブクエリからのカウントに対応する結果セット構造 (クロス結合に似た) を作成するために必要です。

したがって、このクエリは、それぞれ tab1 と tab2 のカウントを含む count1 と count2 の 2 つの列を持つ出力を生成します。このアプローチにより、2 つの異なるテーブルの COUNT(*) 値が明確かつ順序立てて表示されます。

以上が単一の SQL クエリで複数のテーブルから個別のカウントを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。