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!