SQL WHERE Klausa dan Alias Lajur Dikira
Secara langsung menggunakan alias lajur yang dikira dalam klausa SQL WHERE biasanya tidak disokong. Contohnya, pertanyaan ini akan gagal:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0; -- Error</code>
Penyelesaian:
Dua kaedah berkesan memintas had ini:
1. Subkueri (Pertanyaan Bersarang):
Pendekatan ini merangkumi pengiraan dalam subkueri:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
2. Pengulangan Ungkapan:
Sebagai alternatif, ulangi pengiraan dalam klausa SELECT dan WHERE:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Pertimbangan Prestasi:
Walaupun subkueri mungkin kelihatan kurang cekap, sistem pangkalan data moden seperti SQL Server sering mengoptimumkan pertanyaan dengan berkesan. Pelan pelaksanaan untuk kedua-dua kaedah selalunya sama, menunjukkan prestasi yang serupa.
Pengoptimuman Terperinci: Lajur Dikira
Untuk pengiraan rumit yang digunakan berulang kali merentas berbilang pertanyaan, lajur yang dikira menawarkan kelebihan prestasi yang ketara. Lajur prakiraan ini memudahkan pertanyaan dan mengurangkan pengiraan berlebihan.
Atas ialah kandungan terperinci Bolehkah saya Menggunakan Alias Lajur Dikira dalam Klausa SQL WHERE?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!