Bagaimana Menggunakan Subqueries dengan Benar dalam Pernyataan Kemas Kini MySQL untuk Mengelakkan Ralat Sintaks?

Patricia Arquette
Lepaskan: 2024-10-26 17:37:30
asal
490 orang telah melayarinya

How to Properly Use Subqueries in MySQL Update Statements to Avoid Syntax Errors?

Memahami SQL Subqueries dalam Update Query

Apabila mengemas kini data dalam MySQL, selalunya perlu untuk merujuk nilai daripada jadual lain menggunakan subquery. Walau bagaimanapun, ralat boleh berlaku apabila subkueri tidak berkaitan dengan betul dengan pernyataan kemas kini luar.

Pertimbangkan pertanyaan berikut:

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

Pertanyaan ini gagal dengan mesej ralat:

#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

Menyelesaikan Ralat

Ralat timbul kerana subkueri dalam tidak berkaitan dengan klausa where pada pernyataan kemas kini luar. Syarat di mana digunakan pada jadual sasaran (Persaingan) sebelum subquery dilaksanakan. Untuk menyelesaikan isu ini, kemas kini berbilang jadual boleh digunakan:

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

Kemas kini berbilang jadual ini dengan betul menyertai jadual Pertandingan (disebut sebagai C) dengan subkueri (disebut sebagai A), memastikan bahawa nilai subquery tersedia untuk penapisan dalam pernyataan kemas kini luar.

Untuk demonstrasi langsung pertanyaan yang diperbetulkan, rujuk SQL Fiddle berikut: http://www.sqlfiddle.com/#!2/a74f3/ 1

Atas ialah kandungan terperinci Bagaimana Menggunakan Subqueries dengan Benar dalam Pernyataan Kemas Kini MySQL untuk Mengelakkan Ralat Sintaks?. 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!