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

MySQL ग्रुप बाय बाय लेफ्ट जॉइन

मुझे लगता है कि यह वही हो सकता है जो आप यहां सचमुच चाहते हैं:

SELECT DISTINCT
    status_id,
    (SELECT MAX(user_id) FROM comments c2 WHERE c1.status_id = c2.status_id) user_1,
    (SELECT user_id FROM comments c2 WHERE c1.status_id = c2.status_id
     ORDER BY user_id LIMIT 1 OFFSET 1) user_2
FROM comments c1
WHERE user_id IN (2,3);

डेमो

(आपका अपडेट फिडल)

हम अधिकतम user_id . खोजने के लिए सहसंबद्ध उपश्रेणियों का उपयोग कर सकते हैं और दूसरे से अधिकतम user_id प्रत्येक status_id . के लिए , और फिर उनमें से प्रत्येक को दो अलग-अलग स्तंभों के रूप में स्पिन करें। GROUP_CONCAT का उपयोग करना दृष्टिकोण यहां बेहतर हो सकता है, क्योंकि यह आपको CSV सूची के रूप में किसी भी संख्या में उपयोगकर्ताओं को आसानी से समायोजित करने की अनुमति देगा।

साथ ही, यदि आप MySQL 8+ या इससे अधिक का उपयोग कर रहे हैं, तो हम रैंक विश्लेषणात्मक कार्यों का लाभ उठा सकते हैं, जो आसान भी होगा।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL में तारीखों के बीच महीनों का अंतर

  2. पायथन + MySQL - बल्क इंसर्ट

  3. mysql - स्तंभ नाम के रूप में कीवर्ड का उपयोग करते समय त्रुटि 1064 (42000)

  4. mysql त्रुटि 'TYPE=MyISAM'

  5. अन्य मेटाडेटा खोए बिना MySQL में कॉलम डेटा प्रकार बदलें (DEFAULT, NOTNULL...)