Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengatasi Sekatan LIMIT Subquery MySQL dengan Operator IN?

Bagaimana untuk Mengatasi Sekatan LIMIT Subquery MySQL dengan Operator IN?

DDD
DDDasal
2024-12-14 03:13:14203semak imbas

How to Work Around MySQL's Subquery LIMIT Restriction with IN Operator?

Ketidakserasian MySQL dengan Had Subkueri

Mesej ralat "Versi MySQL ini belum lagi menyokong 'LIMIT & IN/ALL/ANY /SOME subquery'" menunjukkan bahawa versi MySQL yang digunakan tidak menyokong penggunaan klausa LIMIT dalam subquery apabila menggunakan operator tertentu seperti IN.

Penyelesaian

Satu penyelesaian untuk pengehadan ini ialah menggunakan JOIN dan bukannya subkueri IN. Kod berikut menunjukkan pendekatan ini:

$Last_Video = $db->fetch_all('
SELECT v.VID, v.thumb
FROM video AS v
INNER JOIN
     (SELECT VID
     FROM video
     WHERE title LIKE "%' . $Channel['name'] . '%"
     ORDER BY viewtime DESC
     LIMIT 5) AS v2
  ON v.VID = v2.VID
ORDER BY RAND()
LIMIT 1
');

Dalam kod ini:

  • Jadual alias "v" digunakan untuk jadual "video" luar.
  • Subkueri digunakan untuk memilih VID video yang sepadan dengan penapis tajuk dan menyusunnya mengikut masa tontonan dalam tertib menurun. Subkueri ini dialiaskan sebagai "v2".
  • Klausa JOIN digunakan untuk menyertai jadual "video" utama dengan subkueri "v2" pada lajur VID.
  • Hasil akhir adalah terhad kepada satu rekod yang dipilih secara rawak menggunakan RAND() dan LIMIT.

Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Sekatan LIMIT Subquery MySQL dengan Operator IN?. 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