MySQL のクロス/外部適用
MySQL は ANSI SQL 機能のサブセットをサポートしていますが、CROSS APPLY はそれらの 1 つではありません。同様の機能を実現するには、別のアプローチを採用する必要があります。
直接近似: 結合における相関サブクエリ
最も近い直接近似には、述語内の相関サブクエリとの結合が含まれます。 :
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 )
簡略化された代替: 直接相関サブクエリ
ターゲット テーブルから 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 の機能を実現するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。