Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Pertanyaan KEMASKINI MySQL dengan Ralat Subkueri: Isu Rujukan Alias?

Bagaimana untuk Membetulkan Pertanyaan KEMASKINI MySQL dengan Ralat Subkueri: Isu Rujukan Alias?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-10-27 07:50:03838semak imbas

How to Fix a MySQL UPDATE Query with Subquery Error: Alias Reference Issues?

Membetulkan Ralat dalam MySQL UPDATE Query dengan Subquery

Pertanyaan yang disediakan melibatkan pengemaskinian medan NumberOfTeams dalam jadual Pertandingan menggunakan subquery. Walau bagaimanapun, pengguna menghadapi ralat disebabkan isu sintaks.

Isunya terletak pada penggunaan alias (a) yang salah dalam klausa WHERE bagi pernyataan UPDATE. Dalam MySQL, alias hanya sah dalam skop subkueri itu sendiri. Oleh itu, merujuk alias a dalam klausa WHERE adalah tidak sah.

Penyelesaian menggunakan Kemas Kini Berbilang Jadual

Untuk membetulkan isu ini, kemas kini berbilang jadual boleh digunakan . Ini melibatkan penyertaan jadual Pertandingan dengan subkueri yang mengira bilangan pasukan untuk setiap pertandingan. Penyertaan dilakukan menggunakan lajur CompetitionID, dan nilai yang dikemas kini kemudian ditetapkan berdasarkan subkueri yang dicantumkan.

<code class="sql">UPDATE Competition AS C
INNER JOIN (
  SELECT CompetitionId, COUNT(*) AS NumberOfTeams
  FROM PicksPoints AS p
  WHERE UserCompetitionID IS NOT NULL
  GROUP BY CompetitionId
) AS A ON C.CompetitionID = A.CompetitionID
SET C.NumberOfTeams = A.NumberOfTeams;</code>

Subkueri mengira bilangan pasukan untuk setiap pertandingan, yang kemudiannya digunakan untuk mengemas kini NumberOfTeams lajur dalam jadual Pertandingan utama. Kaedah ini memastikan bahawa hasil subkueri dirujuk dengan betul dalam logik kemas kini.

Contoh dan Demonstrasi

Demo bagi pertanyaan yang diperbetulkan ini boleh dilihat di http:// www.sqlfiddle.com/#!2/a74f3/1. Menjalankan pertanyaan ini akan berjaya mengemas kini jadual Pertandingan dengan bilangan pasukan yang betul untuk setiap pertandingan.

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Pertanyaan KEMASKINI MySQL dengan Ralat Subkueri: Isu Rujukan Alias?. 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