追加した場合
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';
次に、他のRDBMSがこの構文を許可しない理由がわかります。
- SELECTには3つの非集計列がありますが、GROUPBYには1つあります
- ORDERBY列がGROUPBY/ SELECTになく、集計されていません
DISTINCTではなくGROUPBYを使用する場合は、SELECT
のすべての列でGROUPBYを実行する必要があります。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
ただし、chk.order
はありません。 GROUPBYまたはDISTINCTのどちらを使用しているかに関係なく注文する
では、重複を完全に無視して、これについてはどうでしょうか?
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
または、これを3xservices
ごとの最も早い注文で注文します 列
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)