Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur dalam PostgreSQL WHERE Klausa Tanpa Mendapat Ralat 'lajur [alias_name] tidak wujud'?

Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur dalam PostgreSQL WHERE Klausa Tanpa Mendapat Ralat 'lajur [alias_name] tidak wujud'?

DDD
Lepaskan: 2025-01-20 20:19:11
asal
187 orang telah melayarinya

How Can I Use a Column Alias in a PostgreSQL WHERE Clause Without Getting an

PostgreSQL WHERE Klausa dan Alias ​​Lajur: Penyelesaian

Pertanyaan PostgreSQL kadangkala membuang ralat "lajur [nama_alias] tidak wujud" apabila menggunakan alias lajur dalam klausa WHERE. Ini kerana PostgreSQL memproses klausa SELECT sebelum klausa WHERE, bermakna alias belum ditentukan.

Penyelesaian Berkesan: Klausa WITH (Ungkapan Jadual Biasa)

Cara yang paling boleh dipercayai untuk mengendalikan perkara ini ialah menggunakan klausa WITH (juga dikenali sebagai Ungkapan Jadual Biasa atau CTE). CTE pada asasnya mencipta set hasil sementara yang dinamakan daripada subkueri, membolehkan anda menggunakan alias yang ditakrifkan dalam CTE dalam bahagian berikutnya pertanyaan utama anda, termasuk klausa WHERE.

Berikut ialah contoh ilustrasi:

<code class="language-sql">WITH job_details AS (
    SELECT
        jobs.*,
        CASE
            WHEN lead_informations.state IS NOT NULL THEN lead_informations.state
            ELSE 'NEW'
        END AS lead_status  -- Note: Changed alias for clarity
    FROM jobs
    LEFT JOIN lead_informations
        ON lead_informations.job_id = jobs.id
        AND lead_informations.mechanic_id = 3
)
SELECT *
FROM job_details
WHERE lead_status = 'NEW'; -- Now referencing the alias correctly</code>
Salin selepas log masuk

Pertanyaan yang disemak ini mentakrifkan CTE yang dipanggil job_details. Penciptaan gabungan dan alias berlaku dalam CTE. Pertanyaan utama kemudiannya menggunakan CTE ini, dan alias lead_status tersedia dalam klausa WHERE, mengelakkan ralat. Pendekatan ini menyediakan penyelesaian yang bersih dan cekap kepada isu PostgreSQL biasa ini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Alias ​​Lajur dalam PostgreSQL WHERE Klausa Tanpa Mendapat Ralat 'lajur [alias_name] tidak wujud'?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan