Rumah >pangkalan data >tutorial mysql >Mengapa MySQL (5.x) Tidak Menyokong Ungkapan Jadual Biasa (DENGAN Klausa)?

Mengapa MySQL (5.x) Tidak Menyokong Ungkapan Jadual Biasa (DENGAN Klausa)?

Linda Hamilton
Linda Hamiltonasal
2025-01-12 13:36:42128semak imbas

Why MySQL 5.x Doesn't Support Common Table Expressions (WITH Clause)

MySQL 5.x dan Klausa yang Hilang WITH

MySQL versi 5.x tidak menyokong klausa WITH, ciri SQL-99 standard untuk mentakrifkan Ungkapan Jadual Biasa (CTE). CTE ialah set hasil bernama sementara yang digunakan dalam satu pertanyaan.

Peninggalan ini berbeza dengan sistem pangkalan data utama lain seperti Oracle, SQL Server, PostgreSQL dan Firebird, yang kesemuanya termasuk sokongan CTE. Permintaan untuk fungsi ini telah wujud sejak sekurang-kurangnya 2006, tetapi kekal tidak dilaksanakan dalam MySQL 5.x.

Penyelesaian untuk MySQL 5.x

Tanpa klausa WITH, pengguna MySQL 5.x mesti menggunakan kaedah alternatif untuk meniru gelagat CTE:

  • Subkueri: Pertanyaan bersarang boleh menghasilkan set hasil sementara yang dirujuk dalam pertanyaan utama.
  • Jadual Sementara: Mencipta dan merujuk jadual sementara sebenar menawarkan penyelesaian lain.
  • Prosedur Tersimpan: Prosedur tersimpan menyediakan mekanisme untuk mentakrif dan menggunakan semula pertanyaan kompleks.

Janji MySQL 8.0

MySQL 8.0 dijangka memperkenalkan sokongan CTE, termasuk CTE rekursif. Peningkatan ketara ini akan meningkatkan pematuhan MySQL kepada piawaian SQL-99 dan membuka kunci manfaat ciri berharga ini.

Sehingga MySQL 8.0 tersedia secara meluas, penyelesaian yang disenaraikan di atas kekal sebagai penyelesaian praktikal untuk mengurus pertanyaan yang biasanya menggunakan CTE.

Atas ialah kandungan terperinci Mengapa MySQL (5.x) Tidak Menyokong Ungkapan Jadual Biasa (DENGAN Klausa)?. 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