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

संदेश तालिका से नवीनतम संदेश प्रदर्शित करें, उपयोगकर्ता द्वारा समूहित करें

यह बल्कि कुशल होना चाहिए:

SELECT u.name, sub.*
FROM  (
   SELECT DISTINCT ON (1)
          m.message_from AS user_id
        , m.message AS last_message
   FROM   users    u
   JOIN   messages m ON m.message_to = u.id
   WHERE  u.name = 'Paul'   -- must be unique
   ORDER  BY 1, m.id DESC
   ) sub
JOIN  users u ON sub.user_id = u.id;

सबक्वेरी sub . में नवीनतम संदेश के साथ सभी उपयोगकर्ताओं की गणना करें DISTINCT ON . का उपयोग करके . फिर टोटल users . से जुड़ें नाम हल करने के लिए दूसरी बार।

DISTINCT ON . के लिए विवरण :
प्रत्येक GROUP BY समूह में पहली पंक्ति चुनें?

इसके अलावा:"id" और "name" को कॉलम नामों के रूप में उपयोग करना बहुत उपयोगी नामकरण परंपरा नहीं है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्प्रिंग JDBC + SQL + Java 8 को पोस्टग्रेज करता है - लोकलडेट से/में रूपांतरण

  2. PostgreSQL का उपयोग करके AspNet.Identity को कॉन्फ़िगर करने में असमर्थ

  3. पोस्टगिस + बूस्ट ::ज्योमेट्री + सी ++

  4. SSH टनल के माध्यम से PostgreSQL

  5. मैं postgresql फ़ंक्शन या ट्रिगर से कुछ http अनुरोध कैसे भेज सकता हूं?