Cross/Outer Apply in MySQL
Während MySQL eine Teilmenge der ANSI SQL-Funktionen unterstützt, gehört CROSS APPLY nicht dazu. Um eine ähnliche Funktionalität zu erreichen, müssen alternative Ansätze verwendet werden.
Direkte Approximation: Korrelierte Unterabfrage im Join
Ihre nächste direkte Approximation beinhaltet einen Join mit einer korrelierten Unterabfrage im Prädikat :
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 )
Vereinfachte Alternative: Direkt korreliert Unterabfrage
Wenn Sie nur ein Feld aus der Zieltabelle benötigen, können Sie eine korrelierte Unterabfrage direkt in der SELECT-Anweisung verwenden:
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
Mit diesem Ansatz können Sie das gewünschte abrufen Wert, ohne dass ein Join erforderlich ist.
Das obige ist der detaillierte Inhalt vonWie kann ich die Funktionalität von CROSS APPLY in MySQL erreichen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!