Rumah > pangkalan data > tutorial mysql > Bila hendak menggunakan CROSS APPLY vs. OUTER APPLY dalam SQL?

Bila hendak menggunakan CROSS APPLY vs. OUTER APPLY dalam SQL?

DDD
Lepaskan: 2025-01-10 09:03:41
asal
188 orang telah melayarinya

When to Use CROSS APPLY vs. OUTER APPLY in SQL?

Senario aplikasi praktikal CROSS APPLY dan OUTER APPLY dalam SQL

Pengendali OUTER APPLY dan CROSS APPLY dalam SQL menyediakan operasi data yang fleksibel dan pelaksanaan pertanyaan yang kompleks. Berikut ialah beberapa kes penggunaan kehidupan sebenar yang menunjukkan masa untuk menggunakan setiap operator:

SANGLANG DIGUNAKAN

  • Pertanyaan kumpulan Rekod N Teratas: CROSS APPLY boleh mendapatkan semula keputusan N teratas dengan cekap dalam setiap kumpulan. Contohnya:
<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>
Salin selepas log masuk
  • Panggil fungsi bernilai jadual untuk setiap baris: CROSS APPLY boleh memanggil fungsi bernilai jadual beberapa kali, dengan setiap baris pertanyaan luar sebagai input. 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>
Salin selepas log masuk

MOHON LUAR

  • Gunakan semula alias lajur: OUTER APPLY membenarkan penggunaan semula alias lajur tanpa membuat jadual sementara. Contohnya:
<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>
Salin selepas log masuk
  • Buka pembungkusan berbilang kumpulan lajur: OUTER APPLY boleh membongkar berbilang kumpulan lajur daripada jadual rata. Contohnya:
<code class="language-sql">CREATE TABLE T
  (
     Id INT PRIMARY KEY,
     Foo1 INT, Bar1 INT,
     Foo2 INT, Bar2 INT,
     Foo3 INT, Bar3 INT
  );</code>
Salin selepas log masuk

Gunakan sintaks VALUES (SQL Server 2008):

<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>
Salin selepas log masuk

Atas ialah kandungan terperinci Bila hendak menggunakan CROSS APPLY vs. OUTER APPLY dalam SQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan