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!