Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Rujukan Nilai Klausa SELECT Dikira dalam Klausa WHERE dalam SQL?
SQL WHERE Klausa dan Nilai Klausa PILIH Dikira: Panduan Praktikal
Merujuk secara langsung alias yang ditakrifkan dalam pernyataan SELECT dalam klausa WHERE pertanyaan SQL sering membawa kepada ralat. Ini disebabkan oleh susunan penilaian: klausa SELECT diproses selepas klausa WHERE.
Pertimbangkan contoh bermasalah ini:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE BalanceDue > 0;</code>
Pertanyaan ini akan gagal kerana BalanceDue
belum ditakrifkan apabila klausa WHERE
dinilai.
Berikut ialah dua penyelesaian yang berkesan:
1. Menggunakan Subquery:
Pendekatan ini menggunakan subkueri untuk pra-mengira nilai, membolehkan penggunaannya dalam klausa WHERE pertanyaan luar:
<code class="language-sql">SELECT BalanceDue FROM ( SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices ) AS sub WHERE BalanceDue > 0;</code>
Pertanyaan dalam mengira BalanceDue
dan penapis pertanyaan luar berdasarkan hasil prakiraan ini.
2. Pengiraan Berlebihan dalam Klausa WHERE:
Sebagai alternatif, anda boleh mengulangi pengiraan terus dalam klausa WHERE:
<code class="language-sql">SELECT (InvoiceTotal - PaymentTotal - CreditTotal) AS BalanceDue FROM Invoices WHERE (InvoiceTotal - PaymentTotal - CreditTotal) > 0;</code>
Walaupun lebih mudah, kaedah ini mungkin membawa kepada isu prestasi dengan pengiraan yang sangat kompleks, kerana ungkapan dinilai dua kali.
Pengoptimuman Prestasi:
Sistem pangkalan data moden seperti SQL Server sering mengoptimumkan pertanyaan, melaksanakan pengiraan kompleks sekali sahaja walaupun dengan rujukan berulang. Walau bagaimanapun, untuk pengiraan yang sangat kompleks atau sensitif prestasi, mengulangi pengiraan dalam klausa WHERE
harus dielakkan.
Untuk nilai terkira yang kerap digunakan, mencipta lajur yang dikira ialah penyelesaian jangka panjang yang lebih cekap. Ini menyimpan nilai yang dikira secara berterusan, meningkatkan prestasi pertanyaan dengan ketara.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Rujukan Nilai Klausa SELECT Dikira dalam Klausa WHERE dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!