sql >> Databáze >  >> RDS >> Mysql

Problém s výběrem skupiny podmínek Mysql podle objednávky

Pokud přidáte

SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY';

Pak uvidíte, proč ostatní RDBMS tuto syntaxi neumožňují:

  • 3 neagregované sloupce v SELECT, ale jeden v GROUP BY
  • Sloupec ORDER BY není ve skupině GROUP BY/SELECT a není agregován

Pokud chcete GROUP BY spíše než DISTINCT, pak musíte GROUP BY all ve sloupci 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

Pak ale nemáte žádný chk.order objednávat podle, ať už pomocí GROUP BY nebo DISTINCT

Takže co s tím, úplně ignorovat duplikáty?

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

Nebo toto pro OBJEDNÁVKU PODLE nejranější objednávky na 3x services sloupce

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. Jak exportovat velké množství dat pomocí sql developer - Oracle

  2. Aktualizace SQL z jedné tabulky do druhé na základě shody ID

  3. získat chybu .findOrCreate().

  4. Jak vytvořit klon vašeho databázového clusteru MySQL nebo PostgreSQL