Rumah >pangkalan data >tutorial mysql >Paparan dan Subkueri MySQL dalam Klausa FROM: Bagaimana Mengatasi Had 5.0?

Paparan dan Subkueri MySQL dalam Klausa FROM: Bagaimana Mengatasi Had 5.0?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-08 09:07:44138semak imbas

MySQL Views and Subqueries in the FROM Clause: How to Overcome the 5.0 Limitation?

Subquery untuk klausa FROM dalam paparan MySQL 5.0: had dan penyelesaian

Pengguna MySQL 5.0 mungkin menghadapi ralat semasa cuba membuat paparan yang mengandungi subkueri dalam klausa FROM Mesej ralat ialah "ERROR 1349 (HY000): View's SELECT mengandungi subquery dalam klausa FROM Cipta paparan berdasarkan pertanyaan kompleks yang mengandungi subkueri.

Satu penyelesaian yang mungkin adalah dengan membuat paparan berasingan untuk setiap subkueri dan kemudian menggantikan subkueri dengan paparan terbitan ini. 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>

Untuk memintas pengehadan ini, paparan boleh dibuat untuk kedua-dua subkueri:

<code class="language-sql">CREATE VIEW v_user_sent_count AS
  SELECT u1.name AS UserName, COUNT(m1.UserFromId) AS SentCount
  FROM Message m1, User u1
  WHERE u1.uid = m1.UserFromId
  GROUP BY u1.name;

CREATE VIEW v_users_sent_over_3 AS
  SELECT UserName FROM v_user_sent_count
  WHERE SentCount > 3;</code>

Dalam pertanyaan asal, gantikan subkueri dengan paparan terbitan:

<code class="language-sql">SELECT UserName
FROM v_users_sent_over_3;</code>

Pendekatan ini membenarkan mencipta pandangan berdasarkan subkueri kompleks dalam versi MySQL yang terdapat sekatan subkueri dalam klausa FROM. Walau bagaimanapun, perlu diingatkan bahawa tidak semua subkueri boleh dinyatakan tanpa klausa FROM. Contohnya, subkueri yang digunakan untuk mengisih atau menapis mungkin memerlukan kaedah lain, seperti menggunakan subkueri berkorelasi atau fungsi tetingkap.

Atas ialah kandungan terperinci Paparan dan Subkueri MySQL dalam Klausa FROM: Bagaimana Mengatasi Had 5.0?. 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