PostgreSQL
 sql >> डेटाबेस >  >> RDS >> PostgreSQL

रेल / 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. uWSGI, फ्लास्क, sqlalchemy, और postgres:SSL त्रुटि:डिक्रिप्शन विफल या खराब रिकॉर्ड मैक

  2. जांचें कि पोस्टग्रेज़ तालिका में रिकॉर्ड मौजूद हैं या नहीं

  3. कैसे कोट () PostgreSQL में काम करता है

  4. कैसे बताएं कि पोस्टग्रेज टेबल कब क्लस्टर किया गया था और किस इंडेक्स का इस्तेमाल किया गया था

  5. प्रत्येक पंक्ति को दो तिथियों के बीच यादृच्छिक डेटाटाइम के साथ अपडेट करें