Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias Dikira dalam Klausa SQL WHERE Saya?
SQL WHERE Klausa dan Alias Dikira: Masalah Biasa
SQL membenarkan mencipta alias terkira dalam penyataan SELECT
. Walau bagaimanapun, merujuk secara langsung alias ini dalam klausa WHERE
selalunya mengakibatkan ralat. Had ini boleh menjadi masalah apabila bekerja dengan pengiraan yang rumit.
Penyelesaian Berkesan
Beberapa pendekatan memintas sekatan ini:
Menggunakan Subkueri:
Sarangkan pengiraan dalam subkueri, memberikan nama kepada alias yang dikira. Kemudian, rujuk nama ini dalam klausa WHERE
pertanyaan luar.
Contoh Ilustrasi:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS x WHERE BalanceDue > 0;</code>
Mengulang Pengiraan:
WHERE
.<code class="language-sql"> SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Implikasi Prestasi
Walaupun subkueri adalah mudah, ia boleh membawa kepada kemerosotan prestasi. Sebaliknya, pengiraan kompleks berulang kali dalam klausa WHERE
juga boleh memberi kesan negatif kepada prestasi.
Strategi Optimum
Untuk pengiraan mudah, mengulangi pengiraan secara amnya adalah lebih cekap. Untuk pengiraan yang kompleks, membuat lajur pengiraan berterusan adalah disyorkan. Lajur prakiraan ini mengelakkan pengiraan berlebihan dan memastikan ketekalan data merentas pertanyaan.
Atas ialah kandungan terperinci Mengapa Saya Tidak Boleh Menggunakan Alias Dikira dalam Klausa SQL WHERE Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!