Maison >base de données >tutoriel mysql >Comment OUTER/CROSS APPLY peut-il résoudre les problèmes réels de manipulation de données SQL ?
Applications pratiques de OUTER/CROSS APPLY en SQL
OUTER et CROSS APPLY sont de puissants opérateurs SQL offrant des capacités améliorées de manipulation de données. Cet article clarifie leurs utilisations pratiques à travers des exemples concrets.
Scénario 1 : N premiers enregistrements par catégorie
OUTER APPLY s'avère inestimable pour récupérer les N premières lignes de chaque groupe. Pensez à trouver les deux principaux paramètres pour 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>
Scénario 2 : Utilisation de fonctions table
CROSS APPLY facilite l'exécution de fonctions table pour chaque ligne de la requête principale. Par exemple :
<code class="language-sql">SELECT * FROM sys.dm_exec_query_stats AS qs CROSS APPLY sys.dm_exec_query_plan(qs.plan_handle);</code>
Cela s'applique efficacement sys.dm_exec_query_plan
à chaque ligne de sys.dm_exec_query_stats
.
Scénario 3 : Réutilisation des colonnes calculées
APPLY permet la réutilisation des alias de colonnes calculés, générant plusieurs colonnes dérivées à partir d'une seule expression :
<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>
Scénario 4 : Annulation du pivotement de plusieurs groupes de colonnes
Pour les ensembles de données violant 1NF, APPLY annule efficacement le pivotement de plusieurs groupes de colonnes simultanément :
<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>
La maîtrise de OUTER/CROSS APPLY améliore considérablement les compétences en manipulation de données SQL, permettant ainsi des solutions efficaces aux problèmes de données complexes.
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!