PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

SQL два критерия от едно групиране по

Това може да бъде радикално по-просто :

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
  • Вашата дублирана заявка има всички колони. Няма нужда да JOIN отново към основната таблица.

  • Използвайте Postgres разширението на стандартния SQL DISTINCT :DISTINCT ON :

  • Postgres има правилен булев тип. Можете да ORDER BY булев израз директно. Последователността е FALSE (0), TRUE (1), NULL (НУЛА). Ако a е NULL, този израз е FALSE и първо сортира:(a IS NOT NULL) . Останалите са подредени по id . Ето.

  • Избор на ID става автоматично. Според вашето описание искате ID на реда, избран в тази заявка. Няма какво повече да правя.

  • Вероятно можете да интегрирате това директно във вашата дублирана заявка.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. намерете най-близкото местоположение по географска ширина и дължина в postgresql

  2. Как да създадете потребител в PostgreSQL

  3. PostgreSQL 9.X bytea представяне в 'hex' или 'escape' за миниатюрни изображения

  4. Къде е конфигурационният файл на Postgresql:'postgresql.conf' в Windows?

  5. Запазете изхода от sql функция в csv файл (COPY) с динамично име на файл