sql >> Databasteknik >  >> RDS >> Mysql

MySQL:finns inte i GROUP BY

Du måste ha en hel grupp genom att:

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

SQL92 kräver att alla kolumner (förutom aggregat) i select-satsen är en del av grupp för sats. SQL99 lättar upp denna begränsning lite och säger att alla kolumner i select-satsen måste vara funktionellt beroende av grupp för sats. MySQL tillåter som standard partiell grupp efter och detta kan ge icke-deterministiska svar, till exempel:

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 |
+------+------+

d.v.s. ett slumpmässigt y väljs för gruppen x. Man kan förhindra detta beteende genom att ställa in @@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. Ansluter till PostgreSQL i IRI Workbench

  2. vad är skillnaden mellan join nyckelord och inner join nyckelord i oracle sql?

  3. Visa SQL Server Agent Jobbhistorik med Azure Data Studio

  4. SQL Server CRUD Operations