首頁 >資料庫 >mysql教程 >如何實現MySQL中CROSS APPLY的功能?

如何實現MySQL中CROSS APPLY的功能?

DDD
DDD原創
2024-12-13 10:52:12809瀏覽

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn