Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membetulkan Ralat MySQL \'Ungkapan Senarai PILIH Bukan dalam KUMPULAN OLEH Klausa\'?
Ralat, "Ungkapan senarai SELECT tiada dalam klausa KUMPULAN OLEH dan mengandungi lajur tidak teragregat ' libelle'," biasanya ditemui apabila melaksanakan pertanyaan dengan lajur tidak teragregat dalam senarai SELECT dan KUMPULAN MENGIKUT klausa. Untuk menyelesaikan ralat ini, adalah perlu untuk memastikan bahawa semua lajur tidak teragregat disertakan dalam klausa GROUP BY atau diagregatkan menggunakan fungsi seperti SUM(), AVG(), atau COUNT().
Dalam kes khusus ini, pertanyaan cuba memilih lajur termasuk 'libelle', 'credit_initial', 'disponible_v' dan 'montant'. Walau bagaimanapun, hanya 'libelle' yang disertakan dalam klausa GROUP BY, manakala 'montant' bukan agregat. Untuk menyelesaikan isu ini, ubah suai pertanyaan sama ada untuk memasukkan 'montant' dalam klausa GROUP BY atau agregatnya menggunakan SUM() atau fungsi lain yang sesuai.
SOLUTION
Berikut ialah versi terkini pertanyaan yang termasuk 'montant' dalam GROUP BY klausa:
SELECT libelle, credit_initial, disponible_v, SUM(montant) AS total_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
Sebaliknya, pertanyaan boleh dilaraskan untuk mengagregat 'montant' menggunakan SUM():
SELECT libelle, credit_initial, disponible_v, SUM(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 ORDER BY libelle ASC
Dengan membuat perubahan ini, pertanyaan akan mematuhi MySQL 5.7' s mod KUMPULAN MENGIKUT dan elakkan ralat.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan Ralat MySQL \'Ungkapan Senarai PILIH Bukan dalam KUMPULAN OLEH Klausa\'?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!