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
Lepaskan: 2025-01-11 10:36:41
asal
632 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan