sql >> Databasteknik >  >> RDS >> Mysql

Problem med Välj Mysql-villkorsgrupp efter beställning

Om du lägger till

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Då kommer du att se varför andra RDBMS inte tillåter denna syntax:

  • 3 osammanställda kolumner i SELECT men en i GROUP BY
  • ORDER BY-kolumnen är inte i GROUP BY/SELECT och inte aggregerad

Om du vill GRUPPERA EFTER istället för DISTINCT, måste du GRUPPERA EFTER alla kolumnen i VÄLJ

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

Men då har du ingen chk.order att beställa efter, oavsett om du använder GROUP BY eller DISTINCT

Så hur är det med det här, ignorera dubbletter helt?

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

Eller detta för att BESTÄLLA MED den tidigaste beställningen per 3x services kolumner

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. Hur testar man om JDBC-drivrutinen är korrekt installerad och om DB:n kan anslutas?

  2. Återställa Django postgresql-databasen? spolning fungerar inte

  3. array_push() vs. $array[] =.... Vilket är snabbast?

  4. Postgresql:Unik begränsning över förening av 2 kolumner