Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mencapai Fungsi CROSS APPLY dalam MySQL?

Bagaimanakah Saya Boleh Mencapai Fungsi CROSS APPLY dalam MySQL?

DDD
DDDasal
2024-12-13 10:52:12808semak imbas

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

Cross/Outer Apply dalam MySQL

Walaupun MySQL menyokong subset ciri ANSI SQL, CROSS APPLY bukanlah salah satu daripadanya. Untuk mencapai kefungsian yang sama, pendekatan alternatif mesti digunakan.

Penghampiran Langsung: Subkueri Berkorelasi dalam Sertai

Penghampiran langsung terdekat anda melibatkan gabungan dengan subkueri berkorelasi dalam predikat :

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
        )

Alternatif Ringkas: Langsung Subkueri Berkorelasi

Jika anda memerlukan hanya satu medan daripada jadual sasaran, anda boleh menggunakan subkueri berkorelasi terus dalam pernyataan 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

Pendekatan ini membolehkan anda mendapatkan semula nilai yang diingini tanpa perlu bergabung.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mencapai Fungsi CROSS APPLY dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn