Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Menggunakan JOIN?

Bagaimana untuk Membetulkan Ralat 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Menggunakan JOIN?

Linda Hamilton
Linda Hamiltonasal
2024-12-13 10:08:18819semak imbas

How to Fix MySQL's

Ralat Pertanyaan Bersarang MySQL: 'HAD & DALAM/SEMUA/SEBARANG/SEBARANG subquery' Tidak Disokong

Ralat ini berlaku apabila cuba menggunakan subquery dengan klausa LIMIT dalam klausa IN dalam MySQL. Untuk menyelesaikan isu ini, pendekatan alternatif ialah menggunakan JOIN:

Kod Asal:

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

Kod Refactored dengan JOIN:

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

Penjelasan:

Operasi JOIN memautkan dua jadual (video dan v2) berdasarkan lajur VID biasa. Ini menghapuskan keperluan untuk pertanyaan bersarang dengan klausa LIMIT dalam klausa IN, yang tidak disokong dalam versi MySQL semasa.

Faedah JOIN:

  • Peningkatan prestasi dengan mengurangkan bilangan pertanyaan pangkalan data.
  • Pertanyaan yang lebih mudah dan lebih mudah dibaca struktur.
  • Sokongan untuk senario pertanyaan yang lebih kompleks dengan berbilang jadual dan syarat.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat 'LIMIT & IN/ALL/ANY/SOME subquery' MySQL Menggunakan JOIN?. 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