首页 > 数据库 > mysql教程 > 如何实现MySQL中CROSS APPLY的功能?

如何实现MySQL中CROSS APPLY的功能?

DDD
发布: 2024-12-13 10:52:12
原创
808 人浏览过

How Can I Achieve the Functionality of CROSS APPLY in MySQL?

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板