Rumah >pangkalan data >tutorial mysql >Mengapa MySQL Throwing 'main.users.type' Tiada dalam GROUP BY Error?

Mengapa MySQL Throwing 'main.users.type' Tiada dalam GROUP BY Error?

Patricia Arquette
Patricia Arquetteasal
2024-12-08 00:20:15612semak imbas

Why is MySQL Throwing a 'main.users.type' Isn't in GROUP BY Error?

MySQL Ralat: 'main.users.type' Tiada dalam GROUP BY

Mesej ralat yang anda temui dalam phpMyAdmin menunjukkan bahawa anda 'kehilangan lajur (taip dalam kes ini) daripada klausa GROUP BY anda pertanyaan.

Sebab:

MySQL memerlukan semua lajur dalam klausa SELECT yang bukan fungsi agregat (cth., COUNT, SUM) mesti disertakan dalam GROUP BY klausa. Ini memastikan bahawa keputusan dikumpulkan dengan betul mengikut lajur tersebut.

Betulkan:

Untuk menyelesaikan ralat, anda perlu menambah lajur yang tiada pada klausa GROUP BY :

SELECT `name`, `type`, `language`, `code`
FROM `users`
WHERE `verified` = '1'
GROUP BY `name`, `type`, `language`, `code`
ORDER BY `count` DESC
LIMIT 0, 25

Latar Belakang:

Dalam SQL92, adalah satu keperluan bahawa semua lajur dalam klausa SELECT menjadi sebahagian daripada klausa GROUP BY. Dalam SQL99, sekatan ini dilonggarkan untuk membenarkan lajur yang bergantung secara fungsi pada klausa GROUP BY. Walau bagaimanapun, MySQL membenarkan kumpulan separa secara lalai, yang boleh membawa kepada hasil yang tidak dapat diramalkan.

Untuk memastikan konsistensi, anda boleh menetapkan @@sql_mode kepada 'ONLY_FULL_GROUP_BY':

SET @@sql_mode='ONLY_FULL_GROUP_BY';

Dengan tetapan ini, sebarang pertanyaan GROUP BY separa akan mengakibatkan ralat, memaksa anda memasukkan semua lajur yang diperlukan dalam fasal.

Atas ialah kandungan terperinci Mengapa MySQL Throwing 'main.users.type' Tiada dalam GROUP BY Error?. 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