Rumah >pangkalan data >tutorial mysql >Mengapa Pertanyaan SQL `GROUP BY` Saya Tanpa Fungsi Agregat Mengembalikan Ralat?

Mengapa Pertanyaan SQL `GROUP BY` Saya Tanpa Fungsi Agregat Mengembalikan Ralat?

DDD
DDDasal
2024-12-24 21:42:11750semak imbas

Why Does My SQL `GROUP BY` Query Without Aggregate Functions Return an Error?

Fungsi GROUP BY tanpa Fungsi Agregat

Memahami operasi GROUP BY boleh menjadi mencabar, terutamanya apabila mengecualikan fungsi agregat. Artikel ini menyelidiki konsep dan implikasinya.

Dalam contoh yang diberikan, anda cuba melaksanakan operasi GROUP BY pada jadual EMP tanpa fungsi agregat, mengakibatkan beberapa ralat. Mesej ralat, "bukan ungkapan GROUP BY," menunjukkan bahawa lajur yang dinyatakan dalam klausa GROUP BY mesti sepadan dengan lajur yang dipilih dalam pernyataan SELECT.

Untuk memahami mengapa ini perlu, adalah penting untuk memahami cara GROUP BY mengubah berbilang baris menjadi satu baris. Apabila menggabungkan baris, ia memerlukan panduan untuk mengendalikan lajur dengan nilai yang berbeza-beza. Oleh itu, setiap lajur yang anda sertakan dalam pernyataan SELECT mestilah sama ada:

  • Disertakan dalam klausa GROUP BY
  • Digunakan dalam fungsi agregat

Sebagai contoh, pertimbangkan jadual berikut:

Name | OrderNumber
------------------
John | 1
John | 2

Jika anda melaksanakan GROUP BY pada Nama sahaja, hasilnya memerlukan peraturan untuk memilih Nombor Pesanan. Pilihannya ialah:

  • Sertakan Nombor Pesanan dalam klausa GROUP BY: Ini menghasilkan dua baris:

    • John | 1
    • John | 2
  • Gunakan fungsi agregat:

    • MAX(Nombor Pesanan): Keputusan: John | 2
    • JUMLAH(Nombor Pesanan): Keputusan: John | 3

Dengan memadankan lajur dalam pernyataan SELECT dan GROUP BY, Oracle memastikan manipulasi data yang konsisten dan mengelakkan kekaburan.

Atas ialah kandungan terperinci Mengapa Pertanyaan SQL `GROUP BY` Saya Tanpa Fungsi Agregat Mengembalikan Ralat?. 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