Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Views (Pra-5.1) Tidak Boleh Menggunakan Subqueries dalam Klausa FROM?
Pra-MySQL 5.1 had paparan: subqueries dalam klausa FROM
Dalam versi sebelum MySQL 5.1, jika klausa FROM paparan mengandungi subkueri, ralat akan dilaporkan. Had ini mengurangkan fleksibiliti dalam membina pertanyaan pangkalan data.
Punca Punca
Secara sejarah, enjin MySQL kekurangan pelaksanaan untuk mengendalikan subkueri dalam klausa pandangan FROM. Ini disebabkan terutamanya oleh kerumitan enjin dan masalah prestasi.
Penyelesaian
Untuk memintas pengehadan ini, anda boleh menggunakan kaedah berikut:
Contoh penyelesaian
Pertimbangkan contoh pertanyaan berikut:
<code class="language-sql">SELECT temp.UserName FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId Group BY u1.name HAVING SentCount > 3 ) as temp</code>
Penyelesaian yang mungkin menggunakan jadual terbitan:
<code class="language-sql">SELECT dt.UserName FROM (SELECT u1.name as UserName, COUNT(m1.UserFromId) as SentCount FROM Message m1, User u1 WHERE u1.uid = m1.UserFromId GROUP BY u1.name HAVING SentCount > 3 ) dt</code>
Had Pertanyaan
Walaupun penyelesaian di atas merangkumi kebanyakan senario, terdapat beberapa kes khas di mana subkueri dalam klausa FROM mungkin penting. Tiada penyelesaian langsung untuk jenis pertanyaan ini dalam versi sebelum MySQL 5.1.
Atas ialah kandungan terperinci Mengapa MySQL Views (Pra-5.1) Tidak Boleh Menggunakan Subqueries dalam Klausa FROM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!