Rumah >pangkalan data >tutorial mysql >Bolehkah saya Menggunakan Alias Dikira dalam Klausa SQL WHERE?
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!