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

क्या उपयोगकर्ता संदेश भेजने की इस शैली को प्राप्त करने का कोई आसान तरीका है?

हम्म शायद मैं आपकी समस्या को ठीक से समझ नहीं पा रहा हूँ... लेकिन मेरे लिए समाधान बहुत आसान है:

SELECT c.*, MAX(m.time) as latest_post 
FROM conversations as c 
INNER JOIN messages as m ON c.id = m.conversation_id
WHERE c.userId = 222 OR c.friendId = 222 
GROUP BY c.id
ORDER BY latest_post DESC

यह रहा मेरा परीक्षण डेटा:

बातचीत :

id  userId  friendId
1   222     333
2   222     444

संदेश :

id  message     time (Desc)     conversation_id
14  rty     2012-05-14 19:59:55     2
13  cvb     2012-05-14 19:59:51     1
12  dfg     2012-05-14 19:59:46     2
11  ert     2012-05-14 19:59:42     1
1   foo     2012-05-14 19:22:57     2
2   bar     2012-05-14 19:22:57     2
3   foo     2012-05-14 19:14:13     1
8   wer     2012-05-13 19:59:37     2
9   sdf     2012-05-13 19:59:24     1
10  xcv     2012-05-11 19:59:32     2
4   bar     2012-05-10 19:58:06     1
6   zxc     2012-05-08 19:59:17     2
5   asd     2012-05-08 19:58:56     1
7   qwe     2012-05-04 19:59:20     1

क्वेरी परिणाम:

id  userId  friendId    latest_post
2   222     444     2012-05-14 19:59:55
1   222     333     2012-05-14 19:59:51

अगर ऐसा नहीं है... बस मेरे जवाब पर ध्यान न दें :P

आशा है कि यह मदद करता है



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. त्रुटि 1452 (23000):एक चाइल्ड पंक्ति को जोड़ या अद्यतन नहीं कर सकता:एक विदेशी कुंजी बाधा विफल हो जाती है

  2. एकाधिक चाइल्ड पंक्तियों को एक पंक्ति में संयोजित करें MYSQL

  3. आप एक कॉल करने योग्य स्टेटमेंट से एकाधिक परिणाम कैसे प्राप्त करते हैं?

  4. एक परिणाम लौटने के लिए बाएं शामिल होने को सीमित करना?

  5. MySQL पंक्तियों से क्यूआर कोड जनरेशन