Rumah > pangkalan data > tutorial mysql > Bilakah Anda Harus Menggunakan Ungkapan Jadual Biasa (CTE) Daripada Jadual Terbitan?

Bilakah Anda Harus Menggunakan Ungkapan Jadual Biasa (CTE) Daripada Jadual Terbitan?

Patricia Arquette
Lepaskan: 2025-01-05 22:45:40
asal
202 orang telah melayarinya

When Should You Use a Common Table Expression (CTE) Instead of a Derived Table?

Bilakah Ungkapan Jadual Biasa (CTE) Diperlukan?

Walaupun jadual terbitan mungkin kelihatan mencukupi dalam semua senario, Ungkapan Jadual Biasa ( CTE) menawarkan kelebihan yang berbeza di bawah tertentu keadaan.

Penghadan Jadual Terbitan dan Suhu

Pertimbangkan senario di mana data perlu dicantumkan beberapa kali. Menggunakan penyataan SELECT biasa atau jadual terbitan akan menghasilkan replikasi sintaks gabungan untuk setiap contoh, meningkatkan verbositi kod. Walau bagaimanapun, CTE membenarkan anda mentakrifkan jadual boleh guna semula yang boleh dirujuk beberapa kali dalam pertanyaan.

Contoh

Andaikan anda mempunyai jadual "Pelanggan" dan ingin cari pelanggan yang telah membuat beberapa pesanan.

Menggunakan CTE:

WITH CustomerOrders AS (
    SELECT CustomerID, COUNT(*) AS OrderCount
    FROM Orders
    GROUP BY CustomerID
)

SELECT *
FROM Customers
JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID
WHERE OrderCount > 1;
Salin selepas log masuk

Menggunakan Jadual Terbitan:

(SELECT CustomerID, COUNT(*) AS OrderCount
FROM Orders
GROUP BY CustomerID) AS CustomerOrders

SELECT *
FROM Customers
JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID
WHERE OrderCount > 1;
Salin selepas log masuk

Seperti yang anda lihat, pendekatan CTE menghapuskan keperluan untuk menentukan alias jadual terbitan ("Pesanan Pelanggan") dua kali.

CTE lain Faedah

Selain daripada kebolehgunaan semula, CTE menawarkan faedah tambahan:

  • Rekursi: Rekursi boleh dilaksanakan menggunakan CTE, membenarkan pertanyaan kompleks yang merentasi hierarki struktur data.
  • Sementara storan: CTE menyediakan storan sementara untuk hasil pertanyaan perantaraan, tanpa perlu membuat jadual temp eksplisit.
  • Penghimpunan mengikut lajur terbitan: CTE membolehkan pengumpulan mengikut lajur yang diperoleh daripada subkueri skalar atau fungsi bukan deterministik, yang tidak boleh dilakukan dengan jadual terbitan.

Atas ialah kandungan terperinci Bilakah Anda Harus Menggunakan Ungkapan Jadual Biasa (CTE) Daripada Jadual Terbitan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan