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

単一のクエリで複数のテーブルの行を効率的にカウントするにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-11 14:01:43211ブラウズ

How to Efficiently Count Rows from Multiple Tables in a Single Query?

最適化された複数テーブルの行数クエリ

データベース管理システムでは、多くの場合、複数のテーブルから行数を取得する必要があります。 UNION ALL 演算子は個別のクエリの結果を結合できますが、常に期待どおりの出力が生成されるわけではありません。

この問題を解決するには、より効率的な方法は、SELECT ステートメントでサブクエリを使用することです。この手法を使用すると、複数のクエリを実行し、結果を目的の形式で表示できます。

クエリステートメント:

テーブル tab1 と tab2 の行数をカウントし、結果を 2 つの別個の列 Count_1 と Count_2 として表示する次のクエリについて考えてみましょう。

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

手順:

  • 外側の SELECT ステートメントは、dual という名前のプレースホルダー テーブルを作成します。これは、「デカルト積」テーブルとして使用されます。このテーブルには行と列が含まれており、通常は「ダミー」または「デュアル」という名前が付けられます。
  • 括弧内のサブクエリは、それぞれ tab1 と tab2 の行数をカウントします。
  • AS 句は、サブクエリの結果に count1 および count2 という名前を割り当てます。
  • 外側の SELECT ステートメントによって実行されるデカルト積演算により、2 つのカウントを効果的に結合する行が生成されます。

結果:

クエリを実行すると、Count_1 と Count_2 の 2 つの列を含むテーブルが返され、それぞれ tab1 と tab2 の行数が含まれます。これにより、期待される出力が得られます:

<code>Count_1   Count_2
123       456</code>

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

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