


Klausa GROUP BY
MySQL: Keputusan Tidak Dijangka Tanpa Fungsi Agregat
Klausa GROUP BY
dalam SQL adalah penting untuk pengagregatan data. Walau bagaimanapun, kelakuannya apabila digunakan tanpa fungsi agregat (seperti SUM
, AVG
, COUNT
, dll.) dalam pernyataan SELECT
boleh berlawanan dengan intuisi, terutamanya dalam MySQL.
Mari kita gambarkan ini dengan contoh. Pertimbangkan jadual emp
dengan data pekerja:
name | dept | salary |
---|---|---|
Jack | a | 2 |
Jill | a | 1 |
Tom | b | 2 |
Fred | b | 1 |
Pertanyaan berikut:
SELECT * FROM emp GROUP BY dept;
mungkin nampaknya membayangkan mendapatkan semula semua jabatan yang berbeza. Walau bagaimanapun, output MySQL selalunya:
name | dept | salary |
---|---|---|
Jill | a | 1 |
Fred | b | 1 |
Mengapa Jill dan Fred, dan bukan Jack dan Tom?
Pengoptimuman GROUP BY
MySQL adalah puncanya. Tanpa fungsi agregat, MySQL boleh memilih nilai arbitrari untuk lajur yang tidak disertakan dalam klausa GROUP BY
. Pengoptimuman ini mengutamakan kelajuan, dengan mengandaikan (salah dalam kes ini) bahawa lajur bukan berkumpulan adalah konsisten dalam setiap kumpulan.
Perkara penting yang perlu diingat:
-
Keputusan Tidak Tentu: Apabila meninggalkan lajur daripada klausa
GROUP BY
tanpa fungsi agregat, pilihan nilai MySQL untuk lajur tersebut tidak dapat diramalkan. - Keputusan Deterministik (Jarang): Hasilnya hanya dijamin deterministik jika lajur yang ditinggalkan mempunyai nilai yang sama dalam setiap kumpulan. Ini jarang berlaku dalam senario dunia sebenar.
-
ORDER BY
Tidak Menjamin Determinisme: Menambah klausaORDER BY
tidak menjadikan keputusan deterministik dalam konteks ini.
Pertanyaan yang kelihatan mudah ini menyerlahkan kepentingan memasukkan secara eksplisit semua lajur tidak teragregat dalam klausa GROUP BY
untuk memastikan hasil yang boleh diramal dan boleh dipercayai. Jika tidak, anda berisiko memperoleh data yang tidak konsisten dan berkemungkinan mengelirukan.
Atas ialah kandungan terperinci Mengapakah MySQL GROUP BY Clause Menghasilkan Keputusan Yang Tidak Dijangka Tanpa Fungsi Agregat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Mysqlstringtypesimpactstorageandperformanceasfollows: 1) che-chexed-length, selingasingthesamestoragespace, whycanbefasterbutlessspace-efficient.2) varcharisvariable-length, morespace-efficientbutpotoTanSlower.3)

Mysqlstringtypesincludevarchar, teks, char, enum, andset.1) varcharisversatorvariable-lengtstringsuptoaspecifiedlimit.2)

Mysqloffersvariousstringdatatypes: 1) charforfixed-lengtstrings, 2) varcharforvariable-lengthtext, 3) binaryandvarbinaryforbinarydata, 4) blobandtextforlargedata, dan5)

TograntpermissionstonewMySQLusers,followthesesteps:1)AccessMySQLasauserwithsufficientprivileges,2)CreateanewuserwiththeCREATEUSERcommand,3)UsetheGRANTcommandtospecifypermissionslikeSELECT,INSERT,UPDATE,orALLPRIVILEGESonspecificdatabasesortables,and4)

Toaddusersinmysqleffectivelyandsecurely, ikutiTheSesteps: 1) usethecreateUserStatementToadDanewuser, spesifyingthehostandastrongpassword.2) GrantnessaryPrivileGeSingSupingTheGrantement, ADHERINGTOTHEPRINCIPREFLEFLEASE.3)

TOADDANEWUSERWITHCEPLEXPELPISIONSIONSIONMYSQL, FOLLONGHESESTEPS: 1) COTETETHEUSERWITHCEATEUSER'NEWUSER '@' LOCSOUSTHOST'IDENTIFIFYBY'PA ssword ';. 2) grantrearaccesstoalltablesin'mydatabase'withgrantselectonmydatabase.to'newuser'@'localhost' ;. 3) GrantWriteAccessto '

Jenis data rentetan di MySQL termasuk char, varchar, binari, varbinary, gumpalan, dan teks. Kolaborasi menentukan perbandingan dan menyusun rentetan. 1.BARI sesuai untuk rentetan panjang tetap, Varchar sesuai untuk rentetan panjang berubah-ubah. 2.Binary dan Varbinary digunakan untuk data binari, dan gumpalan dan teks digunakan untuk data objek besar. 3. Peraturan menyusun seperti UTF8MB4_UNICODE_CI mengabaikan kes atas dan bawah dan sesuai untuk nama pengguna; UTF8MB4_BIN adalah sensitif kes dan sesuai untuk bidang yang memerlukan perbandingan yang tepat.

Pemilihan panjang lajur MySqlvarchar terbaik harus berdasarkan analisis data, pertimbangkan pertumbuhan masa depan, menilai kesan prestasi, dan keperluan set aksara. 1) menganalisis data untuk menentukan panjang biasa; 2) Rizab ruang pengembangan masa depan; 3) memberi perhatian kepada kesan panjang besar pada prestasi; 4) Pertimbangkan kesan set aksara pada penyimpanan. Melalui langkah -langkah ini, kecekapan dan skalabiliti pangkalan data dapat dioptimumkan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

MinGW - GNU Minimalis untuk Windows
Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.

ZendStudio 13.5.1 Mac
Persekitaran pembangunan bersepadu PHP yang berkuasa

SecLists
SecLists ialah rakan penguji keselamatan muktamad. Ia ialah koleksi pelbagai jenis senarai yang kerap digunakan semasa penilaian keselamatan, semuanya di satu tempat. SecLists membantu menjadikan ujian keselamatan lebih cekap dan produktif dengan menyediakan semua senarai yang mungkin diperlukan oleh penguji keselamatan dengan mudah. Jenis senarai termasuk nama pengguna, kata laluan, URL, muatan kabur, corak data sensitif, cangkerang web dan banyak lagi. Penguji hanya boleh menarik repositori ini ke mesin ujian baharu dan dia akan mempunyai akses kepada setiap jenis senarai yang dia perlukan.

SublimeText3 versi Inggeris
Disyorkan: Versi Win, menyokong gesaan kod!

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft
