Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melemparkan Ralat 'Lajur Tidak Diketahui dalam Klausa ON' Apabila Mencampurkan Sintaks Sertai?

Mengapa MySQL Melemparkan Ralat 'Lajur Tidak Diketahui dalam Klausa ON' Apabila Mencampurkan Sintaks Sertai?

Mary-Kate Olsen
Lepaskan: 2025-01-13 06:48:42
asal
935 orang telah melayarinya

Why Does MySQL Throw an

Ralat "Lajur Tidak Diketahui" MySQL: Memahami Konflik Sintaks Sertai

Ralat "Lajur tidak diketahui 'p.id' dalam 'pada klausa'" MySQL sering timbul daripada penggunaan sintaks gabungan yang tidak konsisten. Kekaburan ini berpunca daripada perbezaan antara gaya cantuman ANSI-89 dan ANSI-92.

ANSI-89 menggunakan koma untuk mentakrifkan cantuman, manakala ANSI-92 menggunakan kata kunci JOIN eksplisit. Mencampurkan gaya ini membawa kepada ralat penghuraian. Pertanyaan asal tidak menggabungkan kedua-duanya dengan betul, menyebabkan MySQL mentafsir gabungan ANSI-92 terlebih dahulu. Akibatnya, jadual "p" tidak dikenali apabila dirujuk dalam bahagian ANSI-89 syarat cantum.

Penyelesaian adalah untuk mengekalkan konsistensi. Menggunakan sintaks ANSI-92 sepanjang menghapuskan isu keutamaan dan meningkatkan kebolehbacaan pertanyaan.

Berikut ialah pertanyaan yang diperbetulkan menggunakan sintaks ANSI-92 yang konsisten:

SELECT p.*,
    IF(COUNT(ms.PropertyID) > 0,1,0) AS Contacted,
    pm.MediaID,
    DATE_FORMAT(p.AvailableFrom, '%d %b %Y') AS AvailableFrom,
    AsText(pg.Geometry) AS Geometry
FROM property p
JOIN propertygeometry pg ON p.PropertyGeometryID = pg.id
JOIN shortlist sl ON sl.PropertyID = p.id AND sl.MemberID = 384216
LEFT JOIN message ms ON ms.PropertyID = p.id AND ms.SenderID = 384216
LEFT JOIN property_media pm ON pm.PropertyID = p.id AND pm.IsPrimary = 1
WHERE p.paused = 0
GROUP BY p.id
Salin selepas log masuk

Pendekatan ini memastikan pelaksanaan pertanyaan yang lancar dengan mengelakkan konflik sintaks. Sentiasa gunakan kata kunci JOIN eksplisit untuk kejelasan dan pencegahan ralat.

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat 'Lajur Tidak Diketahui dalam Klausa ON' Apabila Mencampurkan Sintaks Sertai?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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