Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menggunakan Alias ​​dalam PostgreSQL WHERE Klausa Tanpa Ralat?

Bagaimana untuk Menggunakan Alias ​​dalam PostgreSQL WHERE Klausa Tanpa Ralat?

Linda Hamilton
Linda Hamiltonasal
2025-01-20 20:16:16282semak imbas

How to Use Aliases in PostgreSQL WHERE Clauses Without Errors?

Mengelakkan Ralat "lajur tidak wujud" Apabila Menggunakan Alias ​​dalam Klausa PostgreSQL WHERE

Pertanyaan PostgreSQL boleh membuang ralat "lajur tidak wujud" apabila menggunakan alias dalam klausa WHERE, walaupun alias ditakrifkan dalam senarai SELECT. Ini berlaku kerana klausa WHERE diproses sebelum senarai SELECT, bermakna alias belum lagi dikenali.

Untuk mengatasinya, gunakan klausa WITH (juga dikenali sebagai Ungkapan Jadual Biasa atau CTE). Klausa WITH mencipta set hasil bernama sementara, membolehkan anda merujuk alias dalam pertanyaan utama.

Berikut ialah contoh yang menggambarkan penyelesaian:

<code class="language-sql">WITH jobs_with_lead_state AS (
    SELECT
        jobs.*,
        CASE WHEN lead_informations.state IS NOT NULL THEN lead_informations.state ELSE 'NEW' END AS lead_state
    FROM jobs
    LEFT JOIN lead_informations
        ON lead_informations.job_id = jobs.id
        AND lead_informations.mechanic_id = 3
)
SELECT *
FROM jobs_with_lead_state
WHERE lead_state = 'NEW';</code>

Pertanyaan yang disemak ini mentakrifkan CTE bernama jobs_with_lead_state. CTE melaksanakan operasi SELECT dan JOIN awal, menghasilkan alias lead_state. Pertanyaan utama kemudiannya menggunakan CTE ini, membenarkan klausa WHERE merujuk lead_state dengan betul. Pendekatan ini mengelakkan ralat dengan memastikan alias tersedia semasa WHERE penilaian klausa.

Atas ialah kandungan terperinci Bagaimana untuk Menggunakan Alias ​​dalam PostgreSQL WHERE Klausa Tanpa Ralat?. 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