Rumah > pangkalan data > tutorial mysql > Mengapa MySQL 5.0 Views Tidak Boleh Mengandungi Subkueri dalam Klausa FROM?

Mengapa MySQL 5.0 Views Tidak Boleh Mengandungi Subkueri dalam Klausa FROM?

Susan Sarandon
Lepaskan: 2025-01-08 09:21:41
asal
751 orang telah melayarinya

Why Can't MySQL 5.0 Views Contain Subqueries in the FROM Clause?

MySQL 5.0: Had subkueri dalam paparan klausa FROM

Dalam MySQL 5.0, jika klausa FROM paparan mengandungi subquery, ralat "ERROR 1349 (HY000): View's SELECT mengandungi subquery dalam klausa FROM" dinaikkan. Had ini terhasil daripada reka bentuk enjin.

Penyelesaian

Untuk memintas pengehadan ini, pertimbangkan penyelesaian berikut:

  • Cipta jadual perantaraan: Ekstrak hasil subkueri ke dalam jadual sementara atau kekal dan kemudian gunakan jadual itu sebagai asas untuk paparan.
  • Gunakan JOIN: Jika subkueri digunakan sebagai penapis, tulis semula sebagai JOIN. Sebagai contoh, daripada menggunakan FROM (SELECT ...) AS subquery, gunakan JOIN (SELECT ...) AS subquery ON.

Sekatan

Sesetengah subkueri mungkin tidak dinyatakan tanpa menggunakan klausa FROM. Contohnya, pertanyaan yang bergantung pada fungsi agregat (cth., GROUP BY, HAVING) tidak boleh ditulis semula secara langsung menggunakan JOIN.

Penyelesaian alternatif

Untuk jenis pertanyaan ini, pertimbangkan alternatif berikut:

  • Prosedur Tersimpan: Pek logik anda ke dalam prosedur atau fungsi tersimpan yang mengembalikan hasil yang diingini.
  • Fungsi Ditentukan Pengguna (UDF): Cipta UDF yang merangkum subkueri dan gunakannya terus dalam definisi paparan.
  • Pencetus: Gunakan pencetus untuk mengendalikan operasi memasukkan, mengemas kini dan memadam untuk mengekalkan data yang diperlukan dalam jadual berasingan.

Nota lain

Penyelesaian di atas boleh menjejaskan prestasi. Berhati-hati menimbang pertukaran dalam kebolehselenggaraan, skalabiliti dan integriti data.

Atas ialah kandungan terperinci Mengapa MySQL 5.0 Views Tidak Boleh Mengandungi Subkueri dalam Klausa FROM?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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