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

MySQL :tidak ada di GROUP BY

Anda harus memiliki grup lengkap dengan:

SELECT `name`, `type`, `language`, `code` 
FROM `users` 
WHERE `verified` = '1' 
GROUP BY `name`, `type`, `language`, `code` 
ORDER BY `count` DESC LIMIT 0, 25

SQL92 mengharuskan semua kolom (kecuali agregat) dalam klausa pilih adalah bagian dari grup demi klausa. SQL99 sedikit melonggarkan batasan ini dan menyatakan bahwa semua kolom dalam klausa pilih harus bergantung secara fungsional dari grup demi klausa. MySQL secara default memungkinkan untuk grup parsial oleh dan ini dapat menghasilkan jawaban non-deterministik, contoh:

create table t (x int, y int);
insert into t (x,y) values (1,1),(1,2),(1,3);
select x,y from t group by x;
+------+------+
| x    | y    |
+------+------+
|    1 |    1 |
+------+------+

Yaitu. y acak dipilih untuk grup x. Seseorang dapat mencegah perilaku ini dengan menyetel @@sql_mode:

set @@sql_mode='ONLY_FULL_GROUP_BY';
select x,y from t group by x; 
ERROR 1055 (42000): 'test.t.y' isn't in GROUP BY


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. BIN() – Dapatkan Nilai Biner Angka di MySQL

  2. Python Terhubung Ke Database MySQL Dengan Konektor MySQL &Contoh PyMySQL

  3. Cara Memeriksa Ukuran Database MySQL di Linux

  4. Alternatif untuk mysql_real_escape_string tanpa terhubung ke DB

  5. Cara memiliki SQL Dinamis di Prosedur Tersimpan MySQL