Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan \"Ralat #1064: Anda mempunyai ralat dalam sintaks SQL anda\" dalam Pertanyaan Kemas Kini MySQL dengan Subquery?

Bagaimana untuk Membetulkan \"Ralat #1064: Anda mempunyai ralat dalam sintaks SQL anda\" dalam Pertanyaan Kemas Kini MySQL dengan Subquery?

Patricia Arquette
Patricia Arquetteasal
2024-10-26 12:06:29667semak imbas

How to Fix

Menyelesaikan Masalah Pertanyaan Kemas Kini MySQL dengan Subkueri

Dalam pertanyaan kemas kini MySQL dengan subkueri, anda mungkin menghadapi ralat yang serupa dengan ini:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'a where a.CompetitionID = Competition.CompetitionID' at line 8

Pertanyaan:

Update Competition
Set Competition.NumberOfTeams =
(
SELECT count(*) as NumberOfTeams
FROM PicksPoints
where UserCompetitionID is not NULL
group by CompetitionID
) a
where a.CompetitionID =  Competition.CompetitionID

Isu:

Ralat timbul kerana klausa where di bahagian luar penyata kemas kini (di mana a.CompetitionID = Competition.CompetitionID) tidak boleh dipautkan kepada subquery dalaman. Penapis tempat digunakan pada jadual yang sedang dikemas kini (Persaingan) sebelum subquery dalam dilaksanakan.

Penyelesaian:

Untuk menyelesaikan isu ini, gunakan kemas kini berbilang jadual :

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

Penjelasan:

Pertanyaan ini menyertai jadual Pertandingan (disebut sebagai C) dengan subkueri (disebut sebagai A) yang mengira bilangan pasukan untuk setiap pertandingan. Syarat sertai adalah pada CompetitionID. Kemudian, penyata kemas kini menetapkan lajur NumberOfTeams dalam jadual Persaingan kepada nilai yang dikira daripada subkueri.

Demo:

Anda boleh mencuba pertanyaan yang dikemas kini ini pada SQL Fiddle : http://www.sqlfiddle.com/#!2/a74f3/1

Atas ialah kandungan terperinci Bagaimana untuk Membetulkan \"Ralat #1064: Anda mempunyai ralat dalam sintaks SQL anda\" dalam Pertanyaan Kemas Kini MySQL dengan Subquery?. 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