Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

MySQL:không có trong GROUP BY

Bạn cần có một nhóm đầy đủ bằng cách:

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

SQL92 yêu cầu tất cả các cột (ngoại trừ tổng hợp) trong mệnh đề select là một phần của mệnh đề nhóm theo. SQL99 nới lỏng hạn chế này một chút và nói rằng tất cả các cột trong mệnh đề select phải phụ thuộc về mặt chức năng của mệnh đề nhóm by. MySQL theo mặc định cho phép nhóm một phần và điều này có thể tạo ra các câu trả lời không xác định, ví dụ:

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

I E. một y ngẫu nhiên được chọn cho nhóm x. Người ta có thể ngăn chặn hành vi này bằng cách đặt @@ 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. Tìm hiểu về Quyền cấp bảng MySQL

  2. CHÈN ... TRÊN CẬP NHẬT KHÓA DUPLICATE với WHERE?

  3. Cấu hình khả dụng cao cho các nút ClusterControl sử dụng CMON HA

  4. Cách sử dụng câu lệnh CASE trong MySQL

  5. ClassCastException:java.math.BigInteger không thể được truyền sang java.lang.Long khi kết nối với MySQL