sql >> Base de Datos >  >> RDS >> Mysql

Problema con Seleccionar grupo de condiciones Mysql por orden

Si agrega

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Luego verá por qué otros RDBMS no permiten esta sintaxis:

  • 3 columnas no agregadas en SELECT pero una en GROUP BY
  • La columna ORDER BY no está en GROUP BY/SELECT y no está agregada

Si desea AGRUPAR POR en lugar de DISTINTO, entonces debe AGRUPAR POR toda la columna en SELECCIONAR

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

Pero entonces no tienes chk.order ordenar por, ya sea usando GROUP BY o DISTINCT

Entonces, ¿qué pasa con esto, ignorando los duplicados por completo?

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

O esto para ORDENAR POR el primer pedido por 3x services columnas

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)