Aplikasi Praktikal OUTER/CROSS APPLY dalam SQL
OUTER dan CROSS APPLY ialah pengendali SQL berkuasa yang menawarkan keupayaan manipulasi data yang dipertingkatkan. Artikel ini menjelaskan kegunaan praktikal mereka melalui contoh dunia sebenar.
Senario 1: Rekod N Teratas bagi setiap Kategori
OUTER APPLY terbukti tidak ternilai untuk mendapatkan semula N baris teratas dalam setiap kumpulan. Pertimbangkan untuk mencari dua parameter teratas untuk setiap prosedur yang disimpan:
<code class="language-sql">SELECT pr.name, pa.name FROM sys.procedures pr OUTER APPLY ( SELECT TOP 2 * FROM sys.parameters pa WHERE pa.object_id = pr.object_id ORDER BY pr.name ) pa ORDER BY pr.name, pa.name;</code>
Senario 2: Menggunakan Fungsi Bernilai Jadual
CROSS APPLY memudahkan pelaksanaan fungsi bernilai jadual untuk setiap baris dalam pertanyaan utama. Contohnya:
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
Ini digunakan dengan cekap sys.dm_exec_query_plan
pada setiap baris daripada sys.dm_exec_query_stats
.
Senario 3: Menggunakan Semula Lajur Dikira
APPLY membenarkan penggunaan semula alias lajur yang dikira, menjana berbilang lajur terbitan daripada satu ungkapan:
<code class="language-sql">SELECT number, doubled_number, doubled_number_plus_one FROM master..spt_values CROSS APPLY ( SELECT 2 * CAST(number AS BIGINT) ) CA1(doubled_number) CROSS APPLY ( SELECT doubled_number + 1 ) CA2(doubled_number_plus_one);</code>
Senario 4: Menyahpaut Berbilang Kumpulan Lajur
Untuk set data yang melanggar 1NF, APPLY menyahpangsi berbilang kumpulan lajur secara serentak dengan cekap:
<code class="language-sql">SELECT Id, Foo, Bar, GrpName FROM T CROSS APPLY ( VALUES('1', Foo1, Bar1), ('2', Foo2, Bar2), ('3', Foo3, Bar3) ) V(GrpName, Foo, Bar);</code>
Menguasai OUTER/CROSS APPLY dengan ketara meningkatkan kemahiran manipulasi data SQL, membolehkan penyelesaian yang cekap untuk cabaran data yang kompleks.
Atas ialah kandungan terperinci Bagaimana OUTER/CROSS APPLY Boleh Menyelesaikan Cabaran Manipulasi Data SQL Dunia Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!