Rumah > pangkalan data > tutorial mysql > Mengapa MySQL Melemparkan Ralat \'Ekspresi Senarai PILIH Bukan dalam GROUP BY Clause\', dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MySQL Melemparkan Ralat \'Ekspresi Senarai PILIH Bukan dalam GROUP BY Clause\', dan Bagaimana Saya Boleh Membetulkannya?

Barbara Streisand
Lepaskan: 2024-11-28 07:53:14
asal
311 orang telah melayarinya

Why Does MySQL Throw a

Cara Menyelesaikan Ralat "Expression of SELECT List Not in GROUP BY Clause" dalam MySQL

Dalam MySQL, melaksanakan pertanyaan kadangkala boleh mengakibatkan ralat yang berkaitan dengan sql_mode tetapan. Salah satu ralat tersebut ialah:

#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
Salin selepas log masuk

Ralat ini berlaku apabila pertanyaan memasukkan lajur dalam senarai PILIH yang tidak disertakan dalam klausa GROUP BY dan tidak diagregatkan (mis., menggunakan SUM, COUNT, dsb. ). Untuk menyelesaikan isu ini, pertanyaan mesti diubah suai untuk memasukkan lajur tidak teragregat dalam klausa GROUP BY atau untuk mengagregatkannya.

Dalam pertanyaan MySQL yang disediakan:

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
order by libelle asc
Salin selepas log masuk

Bukan -lajur teragregat adalah boleh guna_v. Untuk menyelesaikan ralat, tambahkannya pada klausa GROUP BY:

...
GROUP BY libelle, disponible_v
...
Salin selepas log masuk

Sebagai alternatif, agregat disponible_v menggunakan fungsi seperti SUM atau AVG:

...
GROUP BY libelle
HAVING SUM(disponible_v) > 0
...
Salin selepas log masuk

Untuk versi MySQL sebelum 8.0 , anda mungkin perlu melaraskan tetapan sql_mode dalam fail konfigurasi MySQL /etc/mysql/conf.d/mysql.cnf dengan menambah 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
Salin selepas log masuk

Mulakan semula MySQL selepas membuat perubahan pada fail konfigurasi.

Atas ialah kandungan terperinci Mengapa MySQL Melemparkan Ralat \'Ekspresi Senarai PILIH Bukan dalam GROUP BY Clause\', dan Bagaimana Saya Boleh Membetulkannya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan