Maison >base de données >tutoriel mysql >Comment puis-je obtenir les fonctionnalités de CROSS APPLY dans MySQL ?
Application croisée/externe dans MySQL
Bien que MySQL prenne en charge un sous-ensemble de fonctionnalités ANSI SQL, CROSS APPLY n'en fait pas partie. Pour obtenir des fonctionnalités similaires, des approches alternatives doivent être utilisées.
Approximation directe : sous-requête corrélée dans la jointure
Votre approximation directe la plus proche implique une jointure avec une sous-requête corrélée dans le prédicat :
SELECT ORD.ID ,ORD.NAME ,ORD.DATE ,ORD_HISTORY.VALUE FROM ORD INNER JOIN ORD_HISTORY ON ORD_HISTORY.<PRIMARY_KEY> = (SELECT ORD_HISTORY.<PRIMARY_KEY> FROM ORD_HISTORY WHERE ORD.ID = ORD_HISTORY.ID AND ORD.DATE <= ORD_HISTORY.DATE ORDER BY ORD_HISTORY.DATE DESC LIMIT 1 )
Alternative simplifiée : corrélation directe Sous-requête
Si vous n'avez besoin que d'un seul champ de la table cible, vous pouvez utiliser une sous-requête corrélée directement dans l'instruction SELECT :
SELECT ORD.ID ,ORD.NAME ,ORD.DATE ,(SELECT ORD_HISTORY.VALUE FROM ORD_HISTORY WHERE ORD.ID = ORD_HISTORY.ID AND ORD.DATE <= ORD_HISTORY.DATE ORDER BY ORD_HISTORY.DATE DESC LIMIT 1 ) AS VALUE FROM ORD
Cette approche vous permet de récupérer le champ souhaité valeur sans avoir besoin d’une jointure.
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!