Memahami Ralat SQL "Lajur Tidak Diketahui dalam Klausa Dimana"
Ralat "Lajur Tidak Diketahui di Mana Klausa" yang digeruni timbul daripada susunan pelaksanaan tertentu dalam pernyataan SQL. SQL memproses pertanyaan dari kanan ke kiri, bermakna klausa WHERE
dinilai sebelum klausa SELECT
.
Mari kita ilustrasikan dengan contoh:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE user_name = "john";</code>
Di sini, fasal WHERE
cuba menapis menggunakan user_name
. Walau bagaimanapun, alias user_name
hanya ditakrifkan dalam klausa SELECT
. Oleh kerana fasal WHERE
diproses dahulu, ia masih belum menemui alias ini, mengakibatkan ralat "lajur tidak diketahui".
Penyelesaian:
Terdapat dua cara mudah untuk membetulkan perkara ini:
Gunakan nama lajur asal dalam klausa WHERE
: Ini adalah penyelesaian yang paling mudah dan paling berkesan. Rujuk lajur dengan nama sebenar, bukan alias:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE u_name = "john";</code>
Sisipkan lajur beralias dalam kurungan: Pendekatan ini memaksa pangkalan data untuk menyelesaikan alias sebelum menilai klausa WHERE
. Walaupun berfungsi, ia biasanya kurang cekap daripada menggunakan nama lajur asal:
<code class="language-sql">SELECT u_name AS user_name FROM users WHERE (user_name = "john");</code>
Dengan memahami susunan penilaian SQL dan menggunakan salah satu daripada penyelesaian ini, anda boleh menyelesaikan ralat "Lajur Tidak Diketahui di Mana Klausa" dengan berkesan.
Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Mengembalikan 'Lajur Tidak Diketahui dalam Klausa Di Mana'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!