sql >> Database teknologi >  >> RDS >> PostgreSQL

SQL to kriterier fra én gruppe-by

Dette kan være radikalt enklere :

SELECT DISTINCT ON (b, c, e, f)
       b, c, e, f, id   -- add more columns freely
FROM   (<duplicate query here>) sub
ORDER  BY b, c, e, f, (a IS NOT NULL), id
  • Din dubletforespørgsel har alle kolonner. Ingen grund til at JOIN til basisbordet igen.

  • Brug Postgres-udvidelsen af ​​standard SQL DISTINCT :DISTINCT ON :

  • Postgres har en ordentlig boolesk type. Du kan ORDER BY boolesk udtryk direkte. Sekvensen er FALSE (0), TRUE (1), NULL (NUL). Hvis a er NULL, er dette udtryk FALSE og sorterer først:(a IS NOT NULL) . Resten er sorteret efter id . Voilá.

  • Valg af ID sker automatisk. I henhold til din beskrivelse vil du have id'et for rækken valgt i denne forespørgsel. Ikke mere at gøre.

  • Du kan sandsynligvis integrere dette direkte i din dubletforespørgsel.




  1. hvordan kan vi kalde butiksprocedure i hvor-klausul

  2. INSERT Ydeevne - Bitmap vs B-Tree

  3. Indsæt til alle celler, når poster er mere end én PHP

  4. Hvordan ændres den udenlandske nøglehenvisningshandling? (opførsel)