Lajur dalam pernyataan SELECT tiada dalam klausa GROUP BY dan mengandungi lajur bukan agregat....Tidak serasi dengan sql_mode=only_full_group_by
P粉521748211
2023-08-21 13:21:31
<p>Saya menggunakan MySQL 5.7.13 dengan pelayan WAMP pada PC Windows saya</p>
<p>Masalah saya ialah apabila melaksanakan pertanyaan ini</p>
<pre class="brush:php;toolbar:false;">SELECT *
DARIPADA `tbl_customer_pod_uploads`
DI MANA `load_id` = '78' DAN
`status` = 'Aktif'
KUMPULAN MENGIKUT `proof_type`</pre>
<p>Saya sentiasa mendapat ralat ini</p>
<blockquote>
<p> Ungkapan #1 dalam senarai SELECT tiada dalam klausa GROUP BY dan mengandungi lajur bukan agregat 'returntr_prod.tbl_customer_pod_uploads.id' yang tidak mempunyai kebergantungan fungsi pada lajur dalam klausa GROUP BY ini selaras dengannya sql_mode = only_full_group_by tidak serasi</p>
</blockquote>
<p>Sila beritahu saya penyelesaian terbaik. </p>
<p>Hasil yang saya perlukan adalah seperti berikut</p>
<pre class="brush:php;toolbar:false;">+----+---------+---------+------- ------------+-----------+----------------+------- ------------+------------+--------+----- -----------------------------+---------------------+
|. id_pengguna |. id_bil |
+----+---------+---------+---------+----------+--- -----------------------+----------------+--------------+--------- ------- ------------------------------ -------+--- ------------------+
|. 1 |. . 21.1212 |
+----+---------+---------+---------+----------+--- -----------------------+----------------+--------------+--------- ------- ----------------------------- --------+--- --------------------+</pra>
<p><br /></p>
Terdapat pembolehubah sistem
ONLY_FULL_GROUP_BY
dalam enjin MySql.Bermula dengan versi Mysql 5.7.5 : Mod SQL didayakan secara lalai
ONLY_FULL_GROUP_BY
.Sebelum versi 5.7.5 : Tidak didayakan secara lalai
ONLY_FULL_GROUP_BY
.JikaMENYATA atau senarai
ONLY_FULL_GROUP_BY
SQL模式(从版本5.7.5开始默认启用),MySQL将拒绝查询选择列表、HAVING
条件或ORDER BY
列表引用非聚合列,这些列既不在GROUP BY
SQL mod didayakan (didayakan secara lalai bermula dengan versi 5.7.5), MySQL akan menolak senarai pilihan pertanyaan, syaratORDER BY
yang tidak merujuk -agregat lajur, Lajur ini tidak dinamakan dalam klausaGROUP BY
dan tidak bergantung padanya.Untuk menyelesaikan isu ini, gunakan salah satu daripada tiga penyelesaian berikut
(1) PHPMyAdmin
Dilumpuhkan:
ONLY_FULL_GROUP_BY
ModJika anda menggunakan phpMyAdmin, sila tukar tetapan
sql_mode
seperti pada tangkapan skrin di bawah.Edit pembolehubahmod sql dan alih keluar
daripada nilaisql mode
变量并从值中删除ONLY_FULL_GROUP_BY
teksatau
(2) SQL/Command Prompt
Lumpuhkan dengan menjalankan arahan berikut:
ONLY_FULL_GROUP_BY
mod.atau
(3) Jangan gunakan
SELECT *
Jangan lumpuhkan mod
ONLY_FULL_GROUP_BY
, sebaliknyadalam ruangan
SELECT
查询中使用相关列。相关列指的是在group by
子句中出现的列或带有聚合函数(MAX
、MIN
、SUM
、COUNT
dll.)Arahan penting
Perubahan yang dibuat menggunakan
point(1)或point(2)
tidak ditetapkan secara kekal dan akan dipulihkan selepas setiap but semula.Oleh itu, anda harus menetapkan ini dalam fail konfigurasi (cth. dalam
[mysqld]
部分的/etc/mysql/my.cnf
) supaya perubahan berterusan selepas MySQL dimulakan semula:Profil:
/etc/mysql/my.cnf
Nama pembolehubah:
atausql_mode
或者sql-mode
ONLY_FULL_GROUP_BY
Alih keluar perkataan daripada nilaidan simpan fail.
: Jika 🎜pembolehubah tidak ditemui dalam fail konfigurasi, sila masukkan 2 baris berikut di penghujung fail🎜sql_mode
NotaIni
Masalah ini akan diselesaikan hanya dengan menukar mod SQL dalam MySQL, menggunakan arahan berikut:
Berfungsi untuk saya juga... Saya menggunakan ini kerana dalam projek saya, saya mempunyai banyak pertanyaan serupa jadi saya hanya menukar corak SQL ini kepada only_full_group_by
Atau hanya masukkan semua lajur yang ditentukan oleh pernyataan SELECT dalam klausa GROUP BY. sql_mode boleh kekal didayakan.
Terima kasih... :-)
Tarikh kemas kini: 14 Julai 2023
Menukar skema SQL adalah satu penyelesaian, tetapi amalan terbaik untuk bahasa pertanyaan berstruktur adalah mengelak daripada memilih semua (PILIH *...) lajur dan sebaliknya menggunakan fungsi agregat pada lajur pengelompokan, seperti yang dilakukan @Tim Biegeleisen di bawah Disebutkan dalam jawapan kepada https://stackoverflow.com/a/41887524/3602846