Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Membetulkan Ralat MySQL \'Ekspresi SELECT tiada dalam KUMPULAN OLEH klausa\'?

Bagaimana untuk Membetulkan Ralat MySQL \'Ekspresi SELECT tiada dalam KUMPULAN OLEH klausa\'?

Linda Hamilton
Linda Hamiltonasal
2024-11-21 02:24:12433semak imbas

How to Fix the MySQL

Menyelesaikan masalah "Senarai Ungkapan SELECT tiada dalam klausa GROUP BY" Ralat

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!

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