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)