OUTER APPLY ialah pengendali berkuasa dalam SQL yang membolehkan anda mengaitkan baris dalam satu jadual dengan baris dalam jadual lain. Walaupun ia kelihatan serupa dengan INNER JOIN, ia menyediakan fungsi unik dalam situasi tertentu.
Berikut ialah beberapa contoh kehidupan sebenar OUTER APPLY yang membuktikan nilainya:
Soal N baris pertama mengikut kumpulan:
Contoh: Dapatkan semula dua parameter pertama 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>
Panggil fungsi bernilai jadual:
Contoh: Laksanakan fungsi bernilai jadual untuk setiap baris dalam pertanyaan luar.
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
Gunakan semula alias lajur:
Contoh: Gunakan semula alias lajur untuk melakukan berbilang pengiraan.
<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>
Terbalikkan beberapa set lajur:
Contoh: Terbalikkan data daripada jadual dengan struktur nyahnormal.
<code class="language-sql">CREATE TABLE T ( Id INT PRIMARY KEY, Foo1 INT, Bar1 INT, Foo2 INT, Bar2 INT, Foo3 INT, Bar3 INT ); SELECT Id, Foo, Bar, GrpName FROM T CROSS APPLY (VALUES('1', Foo1, Bar1), ('2', Foo2, Bar2), ('3', Foo3, Bar3)) V(GrpName, Foo, Bar);</code>
Atas ialah kandungan terperinci Bila dan Bagaimana Menggunakan OUTER APPLY dalam SQL: Contoh Dunia Sebenar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!