Rumah >pangkalan data >tutorial mysql >Mengapa Saya Tidak Boleh Menggunakan Alias ​​Dikira dalam Klausa SQL WHERE Saya?

Mengapa Saya Tidak Boleh Menggunakan Alias ​​Dikira dalam Klausa SQL WHERE Saya?

Linda Hamilton
Linda Hamiltonasal
2025-01-11 10:53:43642semak imbas

Why Can't I Use a Calculated Alias in My SQL WHERE Clause?

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:

  1. 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>
  2. Mengulang Pengiraan:

    • Daripada menggunakan alias, ulangi pengiraan terus dalam klausa WHERE.
    • Contoh Ilustrasi:
    <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!

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