Rumah > pangkalan data > tutorial mysql > Bagaimanakah Saya Boleh Mengelakkan Ralat 'bukan KUMPULAN OLEH ungkapan' Apabila Menggunakan Fungsi Agregat dalam SQL?

Bagaimanakah Saya Boleh Mengelakkan Ralat 'bukan KUMPULAN OLEH ungkapan' Apabila Menggunakan Fungsi Agregat dalam SQL?

Susan Sarandon
Lepaskan: 2025-01-13 06:15:43
asal
453 orang telah melayarinya

How Can I Avoid

Memahami SQL GROUP BY Klausa dan Fungsi Agregat

Menggunakan klausa GROUP BY SQL sering menyebabkan kekeliruan tentang atribut yang boleh diakses selepas pengumpulan. Mari jelaskan:

GROUP BY dan Lajur Bukan Agregat

Percubaan untuk mengakses lajur tidak teragregat selepas mengumpulkan menghasilkan ralat "bukan KUMPULAN OLEH ungkapan". Ini kerana setiap kumpulan mungkin mengandungi berbilang baris dan nilai dalam lajur tidak teragregat akan berbeza merentas baris tersebut.

Fungsi Agregat: Pandangan Lebih Dalam

Sebaliknya, fungsi agregat (seperti SUM, MAX, AVG, dll.) boleh mengakses lajur asas dalam setiap kumpulan walaupun selepas menggunakan GROUP BY. Mereka mengira satu nilai ringkasan untuk keseluruhan kumpulan.

Contoh:

Pertimbangkan pertanyaan ini:

<code class="language-sql">SELECT *
FROM order_details
GROUP BY order_no;</code>
Salin selepas log masuk

Pertanyaan ini akan gagal kerana ia cuba memilih semua lajur tanpa menggunakan fungsi agregat pada lajur bukan agregat seperti order_price.

Walau bagaimanapun, ini adalah pertanyaan yang sah:

<code class="language-sql">SELECT SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Salin selepas log masuk

Di sini, SUM memproses setiap kumpulan, menjumlahkan nilai order_price untuk memberikan jumlah harga bagi setiap order_no.

Termasuk Lajur Bukan Agregat dalam GROUP BY

Untuk mengakses lajur tidak teragregat selepas dikumpulkan, masukkannya dalam klausa GROUP BY:

<code class="language-sql">SELECT order_no, SUM(order_price)
FROM order_details
GROUP BY order_no;</code>
Salin selepas log masuk

Ini mengambil setiap order_no dengan betul bersama-sama dengan jumlah order_pricenya.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengelakkan Ralat 'bukan KUMPULAN OLEH ungkapan' Apabila Menggunakan Fungsi Agregat 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