


Mengapa MySQL Views (Pra-5.1) Tidak Boleh Menggunakan Subqueries dalam Klausa FROM?
Jan 08, 2025 am 09:11 AMPra-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:
- Gunakan jadual terbitan: Tidak perlu mencipta paparan, terus gunakan pernyataan SELECT yang sama seperti subkueri seperti jadual terbitan. Jadual terbitan boleh dialiaskan dan digabungkan seperti pandangan.
- Buat paparan perantaraan: Uraikan pertanyaan kompleks yang mengandungi subkueri kepada berbilang paparan perantaraan. Setiap subkueri boleh diberikan kepada paparan, dan kemudian pandangan boleh disertai kemudian. Pendekatan ini meningkatkan prestasi dan kebolehselenggaraan.
- Menggunakan subkueri sertai: Dalam sesetengah kes, anda boleh menggunakan subkueri gabungan untuk mencapai hasil yang serupa dengan subkueri dalam klausa FROM. Ini memerlukan membina semula pertanyaan menggunakan operasi gabungan bersarang.
Contoh penyelesaian
Pertimbangkan contoh pertanyaan berikut:
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
Penyelesaian yang mungkin menggunakan jadual terbitan:
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
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Bagaimana saya mengkonfigurasi penyulitan SSL/TLS untuk sambungan MySQL?
