Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Menyelesaikan Ralat 'only_full_group_by' MySQL?

Bagaimana untuk Menyelesaikan Ralat 'only_full_group_by' MySQL?

DDD
Lepaskan: 2025-01-25 03:02:10
asal
408 orang telah melayarinya

How to Resolve MySQL's

Ralat only_full_group_by MySQL 5.7: penjelasan dan penyelesaian terperinci

Mengalami "Ungkapan #1 senarai SELECT tiada dalam klausa GROUP BY" dan ralat "only_full_group_by" dalam MySQL 5.7 boleh mengelirukan. Artikel ini bertujuan untuk menjelaskan masalah ini dan memberikan penyelesaian.

Analisis Masalah

Versi MySQL sebelum 5.7 membenarkan senarai PILIH mengandungi lajur yang tidak muncul dalam klausa GROUP BY, walaupun nilai lajur ini mungkin berbeza dalam kumpulan. Walau bagaimanapun, dalam versi 5.7, tingkah laku lalai telah berubah untuk membenarkan ini hanya apabila lajur ini diagregatkan. Ini dikuatkuasakan oleh mod "only_full_group_by".

Masalah Selesai

Ralat ini menunjukkan bahawa senarai SELECT pertanyaan mengandungi lajur tidak teragregat yang tidak mempunyai kebergantungan berfungsi pada lajur dalam klausa GROUP BY. Untuk menyelesaikan isu ini, anda boleh mengalih keluar lajur tidak teragregat atau menambahkannya pada klausa GROUP BY.

Penyelesaian yang disyorkan

Untuk pertanyaan khusus ini, adalah disyorkan untuk menambah lajur "group_id" pada klausa GROUP BY, memastikan bahawa semua lajur bukan agregat mempunyai kebergantungan berfungsi pada lajur dalam klausa 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_id,
  g.group_name
HAVING
  COUNT(d.user_id) > 0
ORDER BY
  g.group_name</code>
Salin selepas log masuk

Nota lain

Dalam pertanyaan berbilang jadual, yang terbaik adalah melayakkan nama lajur dengan nama jadual atau alias, seperti yang ditunjukkan dalam penyelesaian yang disyorkan.

Mematikan "only_full_group_by" tidak disyorkan kerana ia membenarkan pemilihan sewenang-wenangnya lajur tidak terkumpul, yang boleh membawa kepada hasil yang tidak konsisten dan tidak dapat diramalkan.

Atas ialah kandungan terperinci Bagaimana untuk Menyelesaikan Ralat 'only_full_group_by' MySQL?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan