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
Lepaskan: 2024-12-13 10:08:18
asal
818 orang telah melayarinya

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
');
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan