Jika Anda menambahkan
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
Kemudian Anda akan melihat mengapa RDBMS lain tidak mengizinkan sintaks ini:
- 3 kolom tidak teragregasi di SELECT tetapi satu di GROUP BY
- Kolom ORDER BY tidak ada di GROUP BY/SELECT dan tidak diagregasi
Jika Anda ingin GROUP BY daripada DISTINCT, maka Anda perlu GROUP BY semua kolom di 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
Tapi kemudian Anda tidak memiliki chk.order
untuk memesan, baik menggunakan GROUP BY atau DISTINCT
Jadi bagaimana dengan ini, mengabaikan duplikat sepenuhnya?
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
Atau ini untuk ORDER BY urutan paling awal per 3x services
kolom
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)