Rumah >pangkalan data >tutorial mysql >Mengapa Pelayan SQL Menghasilkan Ralat 'Nama Lajur Tidak Sah' Apabila Menggunakan Alias ​​Fungsi Agregat dalam Klausa HAVING?

Mengapa Pelayan SQL Menghasilkan Ralat 'Nama Lajur Tidak Sah' Apabila Menggunakan Alias ​​Fungsi Agregat dalam Klausa HAVING?

Patricia Arquette
Patricia Arquetteasal
2024-12-24 17:20:15260semak imbas

Why Does SQL Server Produce an

Sekatan Alias ​​Pelayan SQL dalam Klausa HAVING

Dalam Pelayan SQL, menggunakan alias untuk fungsi agregat dalam klausa HAVING boleh mengakibatkan Ralat "Nama lajur tidak sah". Percanggahan yang jelas ini berpunca daripada aliran pelaksanaan pertanyaan SQL.

Klausa HAVING menilai selepas operasi kumpulan tetapi sebelum proses pemilihan. Oleh itu, apabila klausa HAVING mula-mula dilaksanakan, alias yang diberikan kepada fungsi agregat, seperti 'col7' dalam coretan kod yang disediakan, belum lagi dikenali oleh pelayan.

Turutan pelaksanaan pertanyaan adalah seperti berikut:

  1. Sertai jadual yang dinyatakan dalam FROM klausa.
  2. Tapis baris menggunakan klausa WHERE.
  3. Kumpulkan baris berdasarkan klausa GROUP BY.
  4. Hapuskan kumpulan yang tidak memenuhi syarat klausa HAVING.
  5. Kira ungkapan dalam SELECT kenyataan.

Oleh itu, pada tahap MEMPUNYAI penilaian klausa, pelayan tidak mengiktiraf 'col7' sebagai nama lajur yang sah. Sekatan ini menghalang penggunaan alias dalam klausa HAVING untuk merujuk fungsi agregat.

Walau bagaimanapun, adalah mungkin untuk menggunakan alias dalam klausa ORDER BY, kerana penilaian ini berlaku selepas klausa HAVING.

Atas ialah kandungan terperinci Mengapa Pelayan SQL Menghasilkan Ralat 'Nama Lajur Tidak Sah' Apabila Menggunakan Alias ​​Fungsi Agregat dalam Klausa HAVING?. 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