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

Bolehkah saya Menggunakan Alias ​​Dikira dalam Klausa SQL WHERE?

Barbara Streisand
Barbara Streisandasal
2025-01-11 10:48:44555semak imbas

Can I Use Calculated Aliases in SQL WHERE Clauses?

Menggunakan alias yang dikira dalam klausa SQL WHERE

Apabila menggunakan alias yang dikira dalam SQL, adalah penting untuk memahami batasan penggunaannya dalam klausa WHERE. Seperti yang ditunjukkan dalam pertanyaan di bawah:

<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
FROM Invoices
WHERE BalanceDue > 0 --错误</code>

Nilai yang dikiraBalanceDue sebagai alias tidak boleh digunakan secara langsung dalam klausa WHERE. Walau bagaimanapun, terdapat cara untuk mencapai hasil yang diinginkan.

Salah satu cara ialah menggunakan jadual terbitan:

<code class="language-sql">SELECT BalanceDue
FROM (
  SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
  FROM Invoices
) AS x
WHERE BalanceDue > 0;</code>

Sebagai alternatif, pengiraan boleh diulang dalam klausa WHERE:

<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue
FROM Invoices
WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>

Dalam kebanyakan kes, adalah disyorkan untuk mengulangi ungkapan dalam klausa WHERE demi kesederhanaan.

Perlu diingat bahawa penggunaan alias yang dikira secara berlebihan dalam pertanyaan kompleks boleh menyebabkan masalah prestasi. Dalam kes ini, pertimbangkan untuk membuat lajur yang dikira atau meneruskan keputusan untuk akses yang lebih pantas.

Menariknya, dalam contoh yang diberikan, SQL Server mengoptimumkan pertanyaan untuk hanya melakukan pengiraan sekali, tidak kira bagaimana alias dirujuk. Walau bagaimanapun, apabila bekerja dengan pertanyaan yang lebih kompleks, adalah penting untuk memahami potensi kesan prestasi.

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