Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Rujukan Nilai Klausa SELECT Dikira dalam Klausa WHERE dalam SQL?

Bagaimanakah Saya Boleh Rujukan Nilai Klausa SELECT Dikira dalam Klausa WHERE dalam SQL?

Patricia Arquette
Lepaskan: 2025-01-11 10:51:41
asal
403 orang telah melayarinya

How Can I Reference Calculated SELECT Clause Values in a WHERE Clause in 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>
Salin selepas log masuk

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

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

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!

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