MySQL의 CROSS/OUTER APPLY
MySQL은 기본적으로 CROSS APPLY 구문을 지원하지 않으므로 특정 작업을 수행하려고 할 때 문제가 될 수 있습니다. . 이 질문은 다음 CROSS APPLY 쿼리에 해당하는 MySQL을 찾는 데 중점을 두고 있습니다.
SELECT ORD.ID ,ORD.NAME ,ORD.DATE ,ORD_HIST.VALUE FROM ORD CROSS APPLY ( SELECT TOP 1 ORD_HISTORY.VALUE FROM ORD_HISTORY WHERE ORD.ID = ORD_HISTORY.ID AND ORD.DATE <= ORD_HISTORY.DATE ORDER BY ORD_HISTORY.DATE DESC ) ORD_HIST
MySQL에는 직접적인 CROSS APPLY 지원이 부족하지만 해당 기능을 달성할 수 있는 다른 방법이 있습니다. 가장 가까운 근사치는 아래와 같이 조인 쿼리의 조건자로 상관 하위 쿼리를 사용하는 것입니다.
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 )
이 경우와 같이 대상 테이블에서 단일 필드만 필요한 경우 조인 하위 쿼리 포함은 생략할 수 있으며 하위 쿼리를 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
이러한 접근 방식을 사용하면 MySQL 사용자는 다음을 달성할 수 있습니다. 쿼리의 정확성이나 효율성을 저하시키지 않으면서 CROSS APPLY와 유사한 기능을 제공합니다.
위 내용은 MySQL에서 CROSS APPLY 기능을 복제하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!