Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kesalahan sintaks atau pelanggaran akses:1055 Ekspresi #8 dari daftar SELECT tidak ada dalam klausa GROUP BY dan berisi kolom yang tidak diagregasi

Ini adalah hal baru di MySQL 5.7 dan merupakan peringatan bahwa kueri Anda ambigu.

Perhatikan tabel berikut:

id    |   name    |   age    |   points
--------------------------------------------
1         Bob         21         1
2         James       14         1
3         Bob         21         3
4         James       14         2
5         Casey       17         3

Jika Anda melakukan kueri berikut:

SELECT name, age, SUM(points) FROM scores GROUP BY name

Kemudian name kolom digunakan untuk pengelompokan. Perhatikan bahwa age mungkin memiliki beberapa nilai, jadi "tidak digabungkan". Anda perlu melakukan sesuatu untuk meruntuhkan nilai-nilai tersebut.

Perilaku di 5.6 dan sebelumnya adalah memilih yang pertama tergantung pada urutan pengurutan, meskipun ini terkadang tidak dapat diprediksi dan akan gagal. Di 5.7 mereka mencegah Anda melakukannya sejak awal.

Solusinya di sini adalah mengelompokkannya juga, atau menerapkan operator agregat seperti MIN() untuk itu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana cara menghubungkan database MySQL menggunakan Python+SQLAlchemy dari jarak jauh?

  2. Bagaimana cara mengambil sampel baris di MySQL menggunakan RAND (seed)?

  3. Kesalahan mengimpor SQL dump ke MySQL:Basis data tidak dikenal / Tidak dapat membuat basis data

  4. SQL:apakah kita memerlukan kata kunci APAPUN/BEBERAPA dan SEMUA?

  5. Mengapa saya perlu OR NULL di MySQL saat menghitung baris dengan kondisi