PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Grup PostgreSQL yang elegan oleh untuk Ruby on Rails / ActiveRecord

Fitur PostgreSQL yang ingin Anda gunakan di sini adalah DISTINCT ON . Ada dua cara dasar untuk membuat kueri ini melalui ActiveRecord.

Metode pertama adalah dengan menentukan :select dan :order pilihan. Ini berfungsi dengan baik ketika Anda memiliki kueri yang cukup sederhana tanpa :joins atau :include .

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

Jika Anda memiliki kueri yang lebih kompleks di mana ActiveRecord menghasilkan SELECT-nya sendiri klausa, Anda dapat menggunakan subquery untuk memilih catatan target.

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'
)

Perhatikan bahwa ini bisa menjadi sedikit lebih lambat daripada metode pertama tergantung pada data Anda. Saya hanya akan menggunakan metode ini jika diperlukan. Pastikan untuk melakukan benchmark dengan data seperti produksi.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pengaturan dan Penggunaan pgmemcache

  2. Lembar Cheat Kinerja untuk PostgreSQL

  3. Ubah interval menjadi mikrodetik sebagai tipe angka di PostgreSQL?

  4. Kembalikan Cap Waktu Unix di PostgreSQL

  5. Relasi yang diteruskan ke #atau harus kompatibel secara struktural. Nilai yang tidak kompatibel:[:references]