Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Alias dalam Klausa SQL WHERE?
Merujuk Alias dalam Klausa WHERE
Dalam SQL, susunan pelaksanaan pernyataan dalam pertanyaan adalah penting. Khususnya, klausa WHERE dilaksanakan sebelum pernyataan SELECT. Ini bermakna apabila merujuk alias dalam klausa WHERE, ia mesti telah ditakrifkan sebelum cuba menggunakannya.
Pertanyaan dan Ralat Asal
Pertanyaan berikut cuba untuk gunakan alias (_year) dalam klausa WHERE:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90
Walau bagaimanapun, pertanyaan ini menimbulkan ralat:
ERROR: column "_year" does not exist LINE 1: ...STRING (pk, 6, 2)::INT AS _year FROM listing WHERE _year > 90... ^ ********** Error ********** ERROR: column "_year" does not exist
Ralat ini berlaku kerana alias (_year) tidak ditakrifkan sehingga pernyataan SELECT.
Mengatasi Had
Adalah tidak mungkin untuk merujuk secara langsung alias dalam klausa WHERE disebabkan oleh susunan pelaksanaan pernyataan SQL. Untuk mengelakkan pengehadan ini, tulis semula pertanyaan seperti berikut:
SELECT SUBSTRING(pk, 6, 2)::INT AS _year FROM listing WHERE SUBSTRING(pk, 6, 2)::INT > 90
Dalam pertanyaan ini, ungkapan untuk mengira _tahun diulang dalam klausa WHERE. Walaupun tidak ringkas seperti menggunakan alias, ini memastikan bahawa nilai _tahun dikira sebelum ia digunakan dalam perbandingan.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Alias dalam Klausa SQL WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!