OUTER APPLY est un opérateur puissant en SQL qui vous permet d'associer des lignes d'une table avec des lignes d'une autre table. Bien qu'il ressemble à INNER JOIN, il offre des fonctionnalités uniques dans des situations spécifiques.
Voici quelques exemples concrets d'OUTER APPLY qui a prouvé sa valeur :
Interroger les N premières lignes par groupe :
Exemple : Récupérer les deux premiers paramètres de chaque procédure stockée.
<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>
Appeler la fonction table :
Exemple : Exécutez une fonction table pour chaque ligne de la requête externe.
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
Réutiliser l'alias de colonne :
Exemple : Réutilisez les alias de colonnes pour effectuer plusieurs calculs.
<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>
Inverser plusieurs ensembles de colonnes :
Exemple : Inverser les données d'une table à structure dénormalisée.
<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>
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!