Rumah  >  Artikel  >  pangkalan data  >  Fungsi Agregat MySQL Tanpa KUMPULAN OLEH: Mengapa dan Bagaimana?

Fungsi Agregat MySQL Tanpa KUMPULAN OLEH: Mengapa dan Bagaimana?

DDD
DDDasal
2024-11-06 05:42:02482semak imbas

MySQL Aggregate Functions Without GROUP BY: Why and How?

Fungsi Agregat MySQL tanpa KUMPULAN OLEH: Mengapa dan Bagaimana?

Tidak seperti sistem pengurusan pangkalan data hubungan (RDBMS) lain yang menimbulkan ralat apabila fungsi agregat muncul dalam senarai SELECT tanpa klausa GROUP BY, MySQL membenarkannya. Tingkah laku ini telah menarik minat pembangun, membawa kepada pertanyaan berikut:

Mengapa MySQL membenarkan fungsi agregat tanpa GROUP BY?

Jawapan:

Falsafah reka bentuk MySQL membenarkan fungsi lanjutan melebihi standard SQL. Membenarkan fungsi agregat tanpa GROUP BY ialah satu sambungan sedemikian.

Apabila melaksanakan pertanyaan seperti SELECT col1,col2,sum(col3) FROM tbl1, MySQL secara berkesan mengumpulkan baris mengikut semua lajur bukan agregat (dalam ini kes, col1 dan col2). Ia kemudian mengembalikan hasil fungsi agregat (jumlah col3) untuk kumpulan tak tentu tunggal.

Versi MySQL yang lebih awal membenarkan tingkah laku ini secara lalai. Walau bagaimanapun, bermula dari MySQL 5.7.5, mod SQL ONLY_FULL_GROUP_BY telah diperkenalkan untuk menguatkuasakan pematuhan SQL yang lebih ketat dan tidak membenarkan pertanyaan dengan fungsi agregat tanpa GROUP BY. Mod ini boleh didayakan atau dilumpuhkan mengikut keperluan. Secara lalai, ia didayakan dalam MySQL versi 8.0 dan lebih tinggi.

Nota Tambahan:

  • Dokumentasi untuk kumpulan dengan pengendalian dalam MySQL menyediakan butiran lanjut tentang ini tingkah laku.
  • Mod SQL SAHAJA_FULL_GROUP_BY boleh membantu memastikan keserasian dengan RDBMS lain dan meningkatkan prestasi dengan mengelakkan pengiraan yang tidak perlu.

Atas ialah kandungan terperinci Fungsi Agregat MySQL Tanpa KUMPULAN OLEH: Mengapa dan Bagaimana?. 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