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

Елегантна група PostgreSQL от за Ruby on Rails / ActiveRecord

Функцията на PostgreSQL, която искате да използвате тук, е DISTINCT ON . Има два основни начина да направите тази заявка чрез ActiveRecord.

Първият метод е просто да посочите :select и :order настроики. Това работи чудесно, когато имате доста проста заявка без :joins или :include .

Post.all(
  :select => 'DISTINCT ON (date::date) *',
  :order => 'date::date DESC, created_at DESC'
)

Ако имате по-сложна заявка, при която ActiveRecord генерира свой собствен SELECT клауза, можете да използвате подзаявка, за да изберете целевите записи.

Post.all(
  :joins => 'INNER JOIN (SELECT DISTINCT ON (date::date) id FROM posts ORDER BY date::date DESC, created_at DESC) x ON x.id = posts.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. docker compose:postgresql create db, потребителски пропуск и предоставяне на разрешение

  2. Как да добавите модул към Wildfly с помощта на CLI

  3. Приложение Simple Rails:Грешка Не може да се посети Integer

  4. Връщане след грешка в транзакцията

  5. psycopg2 и сигурност на SQL инжектиране