Rumah > Artikel > pangkalan data > Bagaimana untuk Membetulkan Ralat MySQL \'Ekspresi SELECT tiada dalam KUMPULAN OLEH klausa\'?
Masalah:
Apabila melaksanakan a pertanyaan yang merangkumi lajur tidak teragregat dalam klausa GROUP BY, anda menghadapi perkara berikut ralat:
#1055 - Expression of SELECT list is not in GROUP BY clause and contains nonaggregated column this is incompatible with sql_mode=only_full_group_by
Sebab:
Ralat ini berlaku apabila anda mempunyai lajur tidak teragregat dalam senarai SELECT yang tidak disertakan dalam klausa GROUP BY. Dalam MySQL versi 5.7.12, mod SQL only_full_group_by didayakan secara lalai, yang menguatkuasakan peraturan pengelompokan yang lebih ketat.
Penyelesaian:
Untuk menyelesaikan ralat ini, anda boleh sama ada :
1. Tambahkan lajur bukan agregat pada klausa GROUP BY:
Ini memastikan bahawa pertanyaan hanya mengembalikan baris yang mempunyai nilai yang sama untuk semua lajur dalam klausa GROUP BY.
SELECT libelle, credit_initial, disponible_v, SUM(montant) AS montant FROM fiche, annee, type WHERE type.id_type = annee.id_type AND annee.id_annee = fiche.id_annee AND annee = YEAR(CURRENT_TIMESTAMP) GROUP BY libelle, credit_initial, disponible_v ORDER BY libelle ASC;
2. Lumpuhkan mod SQL only_full_group_by:
Ini membenarkan pertanyaan untuk mengembalikan baris yang mungkin tidak mempunyai nilai yang sama untuk semua lajur dalam klausa GROUP BY.
sudo vim /etc/mysql/conf.d/mysql.cnf
Tatal ke bahagian bawah fail dan tambah baris berikut:
[mysqld] sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
Simpan dan keluar dari vim. Mulakan semula MySQL:
sudo service mysql restart
Selepas memulakan semula MySQL, pertanyaan harus dilaksanakan dengan jayanya tanpa ralat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat MySQL \'Ekspresi SELECT tiada dalam KUMPULAN OLEH klausa\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!