Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menyelesaikan ralat MySQL 5.7 `only_full_group_by`?

Bagaimana untuk menyelesaikan ralat MySQL 5.7 `only_full_group_by`?

Linda Hamilton
Lepaskan: 2025-01-25 02:51:09
asal
647 orang telah melayarinya

How to Resolve the MySQL 5.7 `only_full_group_by` Error?

only_full_group_by Ralat dalam MySQL 5.7

MySQL versi 5.7 memperkenalkan mod only_full_group_by, yang memerlukan semua lajur yang tidak diagregatkan dalam pernyataan SELECT mesti disertakan dalam pernyataan GROUP BY. Ralat ini berlaku apabila pernyataan SELECT pertanyaan mengandungi lajur tidak teragregat yang tidak muncul dalam pernyataan GROUP BY.

Terdapat dua cara untuk menyelesaikan masalah ini:

Kaedah 1: Tambahkan lajur yang tiada pada GROUP BY

Tambah lajur yang tiada mod_users_groups.group_id pada pernyataan GROUP BY:

<code class="language-sql">SELECT 
  g.group_id AS 'value', 
  g.group_name AS 'text' 
FROM mod_users_groups g
LEFT JOIN mod_users_data d ON g.group_id = d.group_id 
WHERE g.active = 1 
  AND g.department_id = 1 
  AND g.manage_work_orders = 1 
  AND g.group_name != 'root' 
  AND g.group_name != 'superuser' 
GROUP BY 
  g.group_name, 
  g.group_id 
HAVING COUNT(d.user_id) > 0 
ORDER BY g.group_name</code>
Salin selepas log masuk

Ini memastikan semua lajur yang tidak diagregatkan dalam penyata SELECT disertakan dalam penyataan GROUP BY, menghapuskan ralat.

Kaedah 2: Gunakan fungsi agregat

Sebagai alternatif, jika lajur yang hilang tidak berkaitan dengan kumpulan, anda boleh menggunakan fungsi agregat untuk meringkaskan data sebelum memilihnya. Contohnya, jika group_name sememangnya unik, anda boleh menggantikan mod_users_groups.group_id dengan fungsi agregat berikut:

<code class="language-sql">MIN(mod_users_groups.group_id)</code>
Salin selepas log masuk

Ini akan mengembalikan group_name terkecil untuk setiap group_id unik, memastikan bahawa pernyataan SELECT hanya mengandungi lajur agregat.

Atas ialah kandungan terperinci Bagaimana untuk menyelesaikan ralat MySQL 5.7 `only_full_group_by`?. 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