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

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

Barbara Streisand
Barbara Streisandasal
2025-01-11 10:36:41679semak imbas

Can I Use a Calculated Column Alias in a SQL WHERE Clause?

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!

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