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

Patricia Arquette
Lepaskan: 2024-10-26 12:06:29
asal
665 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!