Mengapa Saya Boleh Menggunakan Fungsi Agregat Tanpa GROUP BY dalam MySQL?

DDD
Lepaskan: 2024-11-06 11:07:02
asal
922 orang telah melayarinya

Why Can I Use Aggregate Functions Without GROUP BY in MySQL?

Perlakuan Unik MySQL terhadap Fungsi Agregat tanpa KUMPULAN OLEH

Dalam MySQL, tidak seperti sistem pengurusan pangkalan data hubungan lain, adalah mungkin untuk menggunakan fungsi agregat dalam senarai PILIH tanpa menyatakan klausa GROUP BY. Tingkah laku ini telah menimbulkan persoalan dalam kalangan pembangun yang biasa dengan platform DBMS yang lebih ketat.

Rasional MySQL

MySQL membenarkan fleksibiliti ini melalui reka bentuk, menganggapnya sebagai lanjutan yang berharga kepada SQL standard. Apabila fungsi agregat digunakan tanpa ketiadaan GROUP BY, hasil yang dikembalikan mewakili satu baris yang mengandungi nilai agregat yang dikira pada keseluruhan jadual. Ini boleh berguna dalam senario di mana maklumat ringkasan dikehendaki tanpa memerlukan pengumpulan.

Contoh

Sebagai contoh, pertimbangkan pertanyaan:

SELECT col1, col2, SUM(col3) FROM tbl1;
Salin selepas log masuk

Tanpa GROUP BY, MySQL mentafsir ini sebagai satu kumpulan dan menyediakan output berikut:

col1    col2    SUM(col3)
-------------------------
(First row value of col1)    (First row value of col2)    (Sum of all col3 values)
Salin selepas log masuk

Penghadan dengan ONLY_FULL_GROUP_BY

Pendekatan lembut MySQL untuk mengendalikan agregat fungsi tanpa GROUP BY telah diperkenalkan dengan ONLY_FULL_GROUP_BY ditetapkan kepada OFF. Dengan keluaran MySQL versi 5.7.5, ONLY_FULL_GROUP_BY didayakan secara lalai, yang menyekat tingkah laku ini.

Mendayakan ONLY_FULL_GROUP_BY memastikan fungsi agregat hanya boleh digunakan bersama dengan klausa GROUP BY, mengakibatkan ralat jika pertanyaan tanpa ia ditemui. Perubahan ini sejajar dengan standard SQL dan menggalakkan ketekalan data.

Atas ialah kandungan terperinci Mengapa Saya Boleh Menggunakan Fungsi Agregat Tanpa GROUP BY dalam MySQL?. 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