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

Bolehkah saya Menggunakan Alias ​​dalam Klausa SQL WHERE?

Linda Hamilton
Lepaskan: 2024-12-26 15:47:10
asal
802 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
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