Dalam Mysql, kaedah penulisan berikut dibenarkan. Tetapi adakah ia tegas atau tidak menyokong penulisan seperti ini? Jika anda mempunyai sebarang keraguan tentang cara untuk mengatasi masalah ini, sila bantu saya.
select * from user group by user_name;
最详细的文档说明在官网找到了。
来源:https://dev.mysql.com/doc/ref...
Medan dalam pilihan perlu dipaksa untuk ditulis dalam kumpulan dengan
pilih nama_pengguna daripada kumpulan pengguna mengikut nama_pengguna;
http://blog.csdn.net/u2830560...
Pertama sekali, fahami konsep pengelompokan dan apakah jenis kesan yang boleh dicapai selepas pengelompokan
Pengelompokan adalah untuk analisis statistik berdasarkan atribut kumpulan
Sebagai contoh, dalam jadual pelajar, dikumpulkan mengikut jantina, anda boleh mengira berapa ramai lelaki dan berapa ramai perempuan.
Lajur hasil pertanyaan mesti terdiri daripada fungsi agregat seperti jumlah dan kiraan. Contohnya:
pilih kiraan(*), jantina daripada kumpulan pelajar mengikut jantina;
Jika ia dipilih * daripada kumpulan pengguna mengikut nama_pengguna; apakah jenis keputusan statistik yang anda mahu dapatkan?
mysql5.6 boleh menggunakan kaedah penulisan ini pilih * daripada kumpulan pengguna mengikut nama_pengguna secara lalai, tetapi kenyataan itu sebenarnya ditukar secara dalaman
mysql5.7 dan kemudiannya tidak boleh menggunakan kaedah penulisan ini secara lalai, dan ralat akan dilaporkan.
Jadi sebelum menulis, fikirkan tentang perkara yang perlu saya kira melalui pengumpulan dan gunakan fungsi pengagregatan yang sesuai
Tiga perkara yang perlu diambil perhatian apabila menggunakan GROUP BY dalam pernyataan SQL
1: Alias tidak boleh digunakan;
2: Selain medan fungsi, medan yang muncul dalam pilih mesti muncul dalam kumpulan mengikut, #🎜 🎜#3: Alias tidak boleh menggunakan perkataan terpelihara
Tiga mata ini tidak diperlukan oleh MYSQL!
Mari lihat kenyataan anda sekali lagi Jika jadual pengguna hanya mempunyai satu medan nama_pengguna, maka pernyataan ini tidak mempunyai masalah
Jika jadual pengguna mempunyai lebih daripada satu medan, maka pernyataan ini tidak mempunyai masalah dalam mysql. , tetapi dalam oracle Terdapat masalah dengan sqlserver
Jika medan nama_pengguna wujud, maka tiada masalah. Kumpulan mengikut ialah pengumpulan mengikut medan Ia biasanya digunakan bersama-sama dengan fungsi agregat seperti anda juga boleh dilaksanakan. Walau bagaimanapun, nama_pengguna biasanya unik, dan tidak masuk akal untuk dikumpulkan mengikut medan unik.
Ini ialah sokongan fungsi khas untuk mysql Seperti yang dikatakan oleh @xuexiphpa, ia boleh dimatikan melalui parameter.
Tetapi tidak digalakkan untuk digunakan Selepas kumpulan mengikut, bilangan rekod yang dikembalikan secara teorinya kurang daripada sebelum pengumpulan Secara amnya, beberapa data statistik akan dikembalikan melalui fungsi pengagregatan.
Gunakan pilih * terus tanpa mengesahkan rekod yang dikembalikan.
Secara amnya, fungsi agregat sering digunakan dalam gabungan
kumpulan mengikut Selepas pengumpulan pengagregatan, sebaiknya simpan elemen dalam klausa pilih sahaja:
1, pemalar
2, nama lajur ditentukan oleh kumpulan oleh
3, fungsi agregat , seperti kiraan(), purata(), jumlah(*), dsb.
Hasil* anda hanya menyenaraikan satu rekod untuk setiap kumpulan, dan anda tidak tahu sama ada ia adalah yang pertama atau nilai rawak