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

Sự cố với Chọn nhóm điều kiện Mysql theo thứ tự

Nếu bạn thêm

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Sau đó, bạn sẽ thấy lý do tại sao các RDBMS khác không cho phép cú pháp này:

  • 3 cột chưa được tổng hợp trong SELECT nhưng một trong GROUP BY
  • Cột ORDER BY không nằm trong GROUP BY / SELECT và không được tổng hợp

Nếu bạn muốn GROUP BY thay vì DISTINCT, thì bạn cần phải GROUP BY tất cả cột trong cột SELECT

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen

Nhưng sau đó bạn không có chk.order để đặt hàng bằng cách sử dụng GROUP BY hay DISTINCT

Vậy còn điều này, bỏ qua các bản sao hoàn toàn thì sao?

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
ORDER BY chk.order ASC

Hoặc cái này để ĐẶT HÀNG BẰNG đơn hàng sớm nhất cho 3x services cột

SELECT s.serviceid, s.servicenameit, s.servicenameen 
FROM services s, kpi k, checklist_has_kpi chk 
WHERE s.serviceid=k.serviceid AND k.kpiid=chk.kpiid AND k.inreport='yes' AND chk.checklistid=61 
GROUP BY s.serviceid, s.servicenameit, s.servicenameen
ORDER BY MIN(chk.order)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ghi vào cơ sở dữ liệu MySQL với gấu trúc bằng SQLAlchemy, to_sql

  2. Option =N trong chuỗi kết nối MySQL ODBC là gì?

  3. mysql_real_escape_string là không xác định

  4. Lưu trữ giá trị Lat Lng trong MySQL bằng Kiểu điểm không gian

  5. Quyền truy cập bị từ chối đối với người dùng 'root' @ 'localhost' (sử dụng mật khẩu:NO)? Không thể xác thực php / Mysql?