Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias dalam Klausa SQL WHERE Saya?
Tidak Dapat Merujuk Alias dalam Klausa WHERE
Apabila cuba merujuk alias dalam klausa WHERE pernyataan SQL, pengguna mungkin menghadapi ralat menunjukkan bahawa lajur yang ditentukan tidak wujud. Ralat ini timbul kerana pelaksanaan SQL mematuhi perintah tertentu, dengan klausa WHERE dinilai sebelum klausa SELECT. Akibatnya, alias yang ditakrifkan dalam klausa SELECT tidak dapat dikenali pada masa pelaksanaan klausa WHERE.
Sebab
Dalam contoh yang disediakan, pertanyaan berikut cuba menapis baris berdasarkan alias (_year) yang dibuat dalam SELECT klausa:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90
Pertanyaan ini akan mengakibatkan ralat berikut:
ERROR: column "_year" does not exist
Penyelesaian
Untuk menyelesaikan isu ini dan alias rujukan dalam klausa WHERE, pertanyaan mesti ditulis semula untuk menggunakan lajur asas sebaliknya:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
Dengan merujuk terus lajur (pk) yang digunakan untuk mencipta alias (_year), pertanyaan akan berjaya dilaksanakan dan mendapatkan hasil yang diingini.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Alias dalam Klausa SQL WHERE Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!