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

Bolehkah saya Menggunakan Alias ​​Lajur dalam Klausa WHERE MySQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-20 01:52:08554semak imbas

Can I Use Column Aliases in MySQL's WHERE Clause?

Gunakan alias dalam klausa MySQL WHERE

Dalam MySQL, alias sering digunakan untuk memberikan nama sementara kepada lajur terbitan. Walaupun mudah untuk rujukan, menggunakannya dalam klausa WHERE boleh menyebabkan ralat.

MySQL mengehadkan merujuk alias lajur dalam klausa WHERE. Ini kerana nilai lajur mungkin belum ditentukan apabila klausa WHERE dilaksanakan. Oleh itu, menyatakan alias dalam klausa WHERE akan mencetuskan ralat "lajur tidak diketahui".

Penyelesaian

Untuk mengatasi had ini, terdapat beberapa penyelesaian:

  • Klausa HAVING: Klausa HAVING boleh mengakses alias selepas klausa WHERE, apabila nilai lajur diketahui. Contohnya, untuk memilih rekod dengan purata rating lebih daripada 5 (dikira sebagai jumlah(reviews.rev_rating)/count(reviews.rev_id) sebagai avg_rating), anda akan menggunakan klausa HAVING berikut:
<code class="language-sql">HAVING avg_rating > 5</code>
  • Ulang ungkapan: Sebagai alternatif, anda boleh mengulang ungkapan alias terus dalam klausa WHERE. Walau bagaimanapun, kaedah ini hanya berfungsi dengan fungsi bukan agregat. Contohnya, untuk memilih rekod dengan penilaian purata lebih besar daripada 5:
<code class="language-sql">WHERE (sum(reviews.rev_rating)/count(reviews.rev_id)) > 5</code>

Sekatan

Sila ambil perhatian bahawa tidak semua ungkapan dibenarkan dalam klausa WHERE. Fungsi agregat seperti SUM memerlukan klausa HAVING.

Seperti yang dinyatakan dalam manual MySQL:

"Rujukan kepada alias lajur dalam klausa WHERE tidak dibenarkan kerana nilai lajur mungkin tidak ditentukan apabila klausa WHERE dilaksanakan

Atas ialah kandungan terperinci Bolehkah saya Menggunakan Alias ​​Lajur dalam Klausa WHERE MySQL?. 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