Rumah >pangkalan data >tutorial mysql >Mengapa My MySQL UPDATE JOIN Query Menghasilkan Ralat Kompilasi?

Mengapa My MySQL UPDATE JOIN Query Menghasilkan Ralat Kompilasi?

DDD
DDDasal
2024-12-07 09:29:16770semak imbas

Why Does My MySQL UPDATE JOIN Query Produce a Compile Error?

Masalah MySQL dengan Kemas Kini Kueri Jadual Sertai

Dalam percubaan untuk mengemas kini jadual menggunakan pertanyaan gabungan MySQL, pengguna mengalami ralat kompilasi. Berikut ialah pertanyaan yang mereka gunakan:

UPDATE  b
SET b.mapx = g.latitude,
    b.mapy = g.longitude
FROM business AS b
INNER JOIN business_geocode g ON b.business_id = g.business_id
WHERE (b.mapx = '' OR b.mapx = 0) AND
      g.latitude > 0

Walaupun betul nama medannya, pertanyaan itu gagal disusun.

Penyelesaian:

Setelah menganalisis pertanyaan, didapati bahawa ralat boleh diselesaikan dengan meletakkan alias jadual sebelum nama lajur, seperti yang ditunjukkan di bawah:

UPDATE business AS b
INNER JOIN business_geocode AS g ON b.business_id = g.business_id
SET b.mapx = g.latitude,
  b.mapy = g.longitude
WHERE  (b.mapx = '' or b.mapx = 0) and
  g.latitude > 0

Kemas kini:

Selepas pengguna mengesahkan bahawa pertanyaan masih menghasilkan ralat sintaks, jadual ujian telah dibuat untuk mengesahkan sintaks. Pertanyaan yang diubah suai telah diuji terhadap MySQL 5.5.8 dan tidak menghasilkan sebarang ralat sintaks, seperti yang dilihat di bawah:

mysql> UPDATE business AS b
    -> INNER JOIN business_geocode AS g ON b.business_id = g.business_id
    -> SET b.mapx = g.latitude,
    ->   b.mapy = g.longitude
    -> WHERE  (b.mapx = '' or b.mapx = 0) and
    ->   g.latitude > 0;
Query OK, 0 rows affected (0.00 sec)
Rows matched: 0  Changed: 0  Warnings: 0

Atas ialah kandungan terperinci Mengapa My MySQL UPDATE JOIN Query Menghasilkan Ralat Kompilasi?. 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