MySQL 中的交叉/外部应用
虽然 MySQL 支持 ANSI SQL 功能的子集,但 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的功能?的详细内容。更多信息请关注PHP中文网其他相关文章!