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

Sắp xếp SQL không theo nhóm theo câu lệnh, luôn sử dụng khóa chính

Giải thích cho những gì đang diễn ra :

Bạn đang thực hiện GROUP BY trên staff.department , tuy nhiên SELECT của bạn danh sách chứa 2 cột không phân nhóm staff.workerID, staff.name . Trong sql tiêu chuẩn, đây là một lỗi cú pháp, tuy nhiên MySql cho phép nó, vì vậy người viết truy vấn phải đảm bảo rằng họ tự xử lý các tình huống như vậy.

Tham khảo: http://dev.mysql.com /doc/refman/5.0/en/group-by-handling.html

Bắt đầu với MySQL 5.1, tính năng không chuẩn có thể bị vô hiệu hóa bằng cách đặt cờ ONLY_FULL_GROUP_BY trong sql_mode: http://dev.mysql.com/doc/refman/5.6/en/sql-mode.html#sqlmode_only_full_group_by

Cách khắc phục :

select staff.workerID, staff.name, staff.department, staff.salary
from staff
join (
  select staff.department, max(staff.salary) AS biggest
  from staff
  group by staff.department
) t
on t.department = staff.department and t.biggest = staff.salary

Trong truy vấn bên trong, tìm nạp bộ phận và mức lương cao nhất của bộ phận bằng cách sử dụng GROUP BY. Sau đó, trong truy vấn bên ngoài, hãy nối các kết quả đó với bảng chính để cung cấp cho bạn kết quả mong muốn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Định dạng ngày trong MySQL để trả về Tên tháng, Năm

  2. SQL_NO_CACHE không hoạt động

  3. MySQL - cập nhật tất cả các bản ghi để khớp với giá trị tối đa trong nhóm

  4. Khôi phục người dùng và mật khẩu 'root' đã xóa cho MySQL

  5. MySQL ERROR 1045 (28000):Quyền truy cập bị từ chối đối với người dùng 'bill' @ 'localhost' (sử dụng mật khẩu:CÓ)