Rumah > pangkalan data > tutorial mysql > Mengapa Pertanyaan SQL Saya Menjana ORA-00979: Bukan KUMPULAN MENGIKUT Ungkapan?

Mengapa Pertanyaan SQL Saya Menjana ORA-00979: Bukan KUMPULAN MENGIKUT Ungkapan?

DDD
Lepaskan: 2025-01-24 04:32:09
asal
567 orang telah melayarinya

Why Does My SQL Query Generate ORA-00979: Not a GROUP BY Expression?

Menyahkod Ralat ORA-00979 dalam Klausa GROUP BY SQL

Ralat SQL biasa ini, ORA-00979 ("Bukan ungkapan GROUP BY"), berlaku apabila pertanyaan anda menggunakan GROUP BY tetapi termasuk lajur dalam senarai SELECT yang tidak dikumpulkan atau diagregatkan. Mari terokai cara membetulkannya.

Masalah utama terletak pada ketidakpadanan antara klausa SELECT dan GROUP BY. GROUP BY menyatukan baris dengan nilai yang sepadan ke dalam kumpulan. Setiap lajur dalam pernyataan SELECT anda mestilah sama ada:

  1. Muncul dalam klausa GROUP BY: Ini memastikan setiap nilai yang dipilih dikaitkan secara langsung dengan kumpulan.
  2. Agregat: Gunakan fungsi seperti MIN(), MAX(), SUM(), AVG(), COUNT() untuk meringkaskan nilai dalam setiap kumpulan.

Contoh Ilustrasi

Bayangkan meja dengan janji temu:

Appointment ID (appt_id) Patient Name (patient) Doctor (doctor)
1 Alice Dr. Smith
2 Bob Dr. Smith
3 Charlie Dr. Jones

Pertanyaan yang salah:

<code class="language-sql">SELECT appt_id, patient, doctor FROM appointments GROUP BY doctor;</code>
Salin selepas log masuk

Ini akan gagal dengan ORA-00979 kerana appt_id dan patient tidak dikumpulkan.

Pendekatan Betul

  • Sertakan semua lajur bukan agregat dalam GROUP BY:
<code class="language-sql">SELECT doctor, COUNT(*) FROM appointments GROUP BY doctor;</code>
Salin selepas log masuk

Ini mengira janji temu setiap doktor.

  • Gunakan fungsi agregat:
<code class="language-sql">SELECT doctor, COUNT(*) AS appointment_count, MIN(appt_id) AS first_appointment FROM appointments GROUP BY doctor;</code>
Salin selepas log masuk

Ini mengira janji temu dan mencari ID temu janji minimum bagi setiap doktor.

Kuncinya adalah untuk memastikan hubungan yang konsisten antara kriteria pengelompokan dan data yang dipilih. Menggunakan fungsi agregat membolehkan anda meringkaskan data dalam kumpulan, mengelakkan ralat ORA-00979.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL Saya Menjana ORA-00979: Bukan KUMPULAN MENGIKUT Ungkapan?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan