Cet article vous apporte des connaissances pertinentes sur SQL server. Il présente principalement la méthode de SQL Server utilisant CROSS APPLY et OUTER APPLY pour implémenter les requêtes de connexion. L'article le présente en détail à travers un exemple de code, je l'espère. aide tout le monde.
Étude recommandée : "Tutoriel SQL"
CROSS APPLY et OUTER APPLY peuvent faire :
Lorsqu'un enregistrement dans la table de gauche est associé à plusieurs enregistrements dans la table de droite, je dois en contrôler un ou plusieurs enregistrements dans la table de droite. Les enregistrements correspondent à la table de gauche.
Il existe deux tables : Student (table des étudiants) et Score (table des scores). Les données sont les suivantes :
ROSS APPLY signifie "application croisée". table de gauche , , puis chaque enregistrement de la table de droite est mis en correspondance avec l'enregistrement actuel dans la table de gauche. Si la correspondance réussit, les enregistrements de la table de gauche et de la table de droite seront fusionnés en un seul enregistrement et si la correspondance échoue, les enregistrements de la table de gauche et de la table de droite seront supprimés ; (Similaire à INNER JOIN)
Interrogez les deux derniers résultats des tests de chaque élève.
SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1 CROSS APPLY ( SELECT TOP 2 * FROM Score AS T WHERE T1.StudentNo = T.StudentNo ORDER BY T.ExamDate DESC ) AS T2
Résultat :
OUTER APPLY signifie "application externe", ce qui est cohérent avec le principe de CROSS APPLY, sauf que lorsque la correspondance échoue, la table de gauche et la table de droite seront également être fusionné en un seul enregistrement de sortie, mais le champ de sortie de la table de droite est nul. (Similaire à LEFT OUTER JOIN)
Interrogez les deux derniers résultats aux tests de chaque élève et remplissez les scores des étudiants qui n'ont pas passé le test avec null
SELECT T1.StudentNo, T1.Name, T2.ExamScore, T2.ExamDate FROM Student AS T1 OUTER APPLY ( SELECT TOP 2 * FROM Score AS T WHERE T1.StudentNo = T.StudentNo ORDER BY T.ExamDate DESC ) AS T2
Résultat :
Il existe un tableau comme celui-ci :
Un tableau très simple avec un seul champ num. Je souhaite convertir les nombres entiers de ce champ en valeurs binaires octales et hexadécimales. respectivement. Il existe des fonctions table prêtes à l'emploi pour la conversion de base.
SELECT * FROM #T a CROSS APPLY [dbo].[F_TConversion](a.num)
Pour résumer : si l'ensemble de résultats de la requête doit utiliser une fonction table pour traiter la valeur d'un champ, veuillez utiliser CROSS APPLY~
Il existe une table étudiante. , les trois champs de nom, de sujet et de score sont les suivants :
Je veux voir le nom, le sujet et le score de la première place en chinois, des deux premiers en mathématiques et des trois premiers en anglais . La méthode d'implémentation utilisant cross apply est la suivante :
SELECT b.* FROM ( select Subject='Chiness',num=1 union all select 'Math',2 union all select 'English',3) a cross apply (select top(a.num) * from Students where Subject=a.Subject ) b
Apprentissage recommandé : "Tutoriel SQL"
.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!