Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias ​​dalam Klausa SQL WHERE Saya?

Mengapa Saya Tidak Boleh Menggunakan Alias ​​dalam Klausa SQL WHERE Saya?

Barbara Streisand
Barbara Streisandasal
2025-01-05 11:43:44401semak imbas

Why Can't I Use Aliases in My SQL WHERE Clause?

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!

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