Heim > Datenbank > MySQL-Tutorial > Wann sollte CROSS APPLY vs. OUTER APPLY in SQL verwendet werden?

Wann sollte CROSS APPLY vs. OUTER APPLY in SQL verwendet werden?

DDD
Freigeben: 2025-01-10 09:03:41
Original
161 Leute haben es durchsucht

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

Praktische Anwendungsszenarien von CROSS APPLY und OUTER APPLY in SQL

Die Operatoren OUTER APPLY und CROSS APPLY in SQL ermöglichen flexible Datenoperationen und komplexe Abfrageausführung. Hier sind einige Anwendungsfälle aus der Praxis, die veranschaulichen, wann die einzelnen Operatoren verwendet werden sollten:

ÜBERGREIFENDE ANWENDUNG

  • Gruppenabfrage Top-N-Datensätze: CROSS APPLY kann die Top-N-Ergebnisse in jeder Gruppe effizient abrufen. Zum Beispiel:
<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>
Nach dem Login kopieren
  • Für jede Zeile eine Tabellenwertfunktion aufrufen: CROSS APPLY kann eine Tabellenwertfunktion mehrmals aufrufen, wobei jede Zeile der äußeren Abfrage als Eingabe dient. Zum Beispiel:
<code class="language-sql">SELECT *
FROM sys.dm_exec_query_stats AS qs
CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle)</code>
Nach dem Login kopieren

ÄUSSERLICHE ANWENDUNG

  • Spaltenaliase wiederverwenden: OUTER APPLY ermöglicht die Wiederverwendung von Spaltenaliasen, ohne temporäre Tabellen zu erstellen. Zum Beispiel:
<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>
Nach dem Login kopieren
  • Mehrere Spaltengruppen entpacken: OUTER APPLY kann mehrere Spaltengruppen aus einer flachen Tabelle entpacken. Zum Beispiel:
<code class="language-sql">CREATE TABLE T
  (
     Id INT PRIMARY KEY,
     Foo1 INT, Bar1 INT,
     Foo2 INT, Bar2 INT,
     Foo3 INT, Bar3 INT
  );</code>
Nach dem Login kopieren

Verwenden Sie die VALUES-Syntax (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>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWann sollte CROSS APPLY vs. OUTER APPLY in SQL verwendet werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage