Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Alias ​​dalam Klausa SQL WHERE?

Bolehkah saya Menggunakan Alias ​​dalam Klausa SQL WHERE?

Linda Hamilton
Linda Hamiltonasal
2024-12-26 15:47:10756semak imbas

Can I Use Aliases in SQL WHERE Clauses?

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!

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