Maison > base de données > tutoriel mysql > Comment puis-je obtenir les fonctionnalités de CROSS APPLY dans MySQL ?

Comment puis-je obtenir les fonctionnalités de CROSS APPLY dans MySQL ?

DDD
Libérer: 2024-12-13 10:52:12
original
887 Les gens l'ont consulté

How Can I Achieve the Functionality of CROSS APPLY in 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
        )
Copier après la connexion

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
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal