Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggabungkan COUNT(*) Keputusan dengan Cekap daripada Berbilang Jadual ke dalam Satu Baris?

Bagaimanakah Saya Boleh Menggabungkan COUNT(*) Keputusan dengan Cekap daripada Berbilang Jadual ke dalam Satu Baris?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 13:52:42415semak imbas

How Can I Efficiently Combine COUNT(*) Results from Multiple Tables into a Single Row?

Menggabungkan COUNT(*) Hasil daripada Pelbagai Jadual: Perbandingan UNION dan Produk Cartesian

Menganalisis data merentas berbilang jadual selalunya memerlukan hasil gabungan. Tugas yang kerap dilakukan ialah mendapatkan kiraan baris serentak daripada jadual yang berbeza.

Katakan anda memerlukan kiraan baris daripada tab1 dan tab2. Pertanyaan UNION mungkin kelihatan seperti penyelesaiannya:

<code class="language-sql">SELECT COUNT(*) AS Count_1 FROM schema.tab1 UNION ALL SELECT COUNT(*) AS Count_2 FROM schema.tab2</code>

Walau bagaimanapun, ini menghasilkan set hasil menegak, dengan Count_1 dan Count_2 dalam baris yang berasingan. Untuk keluaran satu baris yang lebih teratur, pertimbangkan pendekatan produk Cartesian:

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

Begini cara pertanyaan ini berfungsi:

  • Jadual dual (jadual dummy dalam banyak sistem pangkalan data) menyediakan satu baris, bertindak sebagai rangka kerja untuk hasil gabungan.
  • Subqueries secara bebas mengira COUNT(*) untuk setiap jadual.
  • Hasil subkueri ini dialiaskan sebagai count1 dan count2, menghasilkan output dua lajur, satu baris.

Kaedah ini menggabungkan kiraan baris dengan cekap daripada kedua-dua jadual menjadi satu baris berstruktur, menghasilkan hasil yang diingini:

<code>count1 | count2
-------+-------
  123  |   456</code>

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan COUNT(*) Keputusan dengan Cekap daripada Berbilang Jadual ke dalam Satu Baris?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn