sql >> Databáze >  >> RDS >> PostgreSQL

SQL dvě kritéria z jedné skupiny

To může být radikálně jednodušší :

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
  • Váš duplicitní dotaz obsahuje všechny sloupce. Není třeba se JOIN znovu k základnímu stolu.

  • Použijte Postgres rozšíření standardního SQL DISTINCT :DISTINCT ON :

  • Postgres má správný booleovský typ. Můžete ORDER BY přímo booleovský výraz. Sekvence je FALSE (0), TRUE (1), NULL (NULA). Je-li a NULL, je tento výraz FALSE a seřadí jako první:(a IS NOT NULL) . Zbytek je seřazen podle id . Voilá.

  • Výběr ID se děje automaticky. Podle vašeho popisu chcete v tomto dotazu vybrat ID řádku. Není co dělat.

  • Pravděpodobně to můžete přímo integrovat do duplicitního dotazu.




  1. Jak získám textový obsah z BLOB v Oracle SQL

  2. Aktualizační dotaz MySQL pomocí levého spojení

  3. org.postgresql.util.PSQLException:Velké objekty nelze použít v režimu automatického potvrzení

  4. Spouštěče přihlášení na serveru SQL Server