Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Có cách nào đơn giản hơn để đạt được phong cách nhắn tin của người dùng này không?

hmm có thể tôi không hiểu chính xác vấn đề của bạn ... nhưng với tôi thì giải pháp khá đơn giản:

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

đây là dữ liệu thử nghiệm của tôi:

Cuộc hội thoại:

id  userId  friendId
1   222     333
2   222     444

Thông báo:

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

Kết quả truy vấn:

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

Nếu không phải vậy ... hãy bỏ qua câu trả lời của tôi:P

Hy vọng điều này sẽ giúp ích



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm thế nào để viết một (MySQL) LIMIT trong SQL Server?

  2. Làm cách nào để nhập tệp kết xuất MySQL lớn (14 GB) vào cơ sở dữ liệu MySQL mới?

  3. Chuyển đổi cột mysql DATETIME thành epoch giây

  4. MySQL insert to DATETIME:Sử dụng định dạng ISO ::8601 có an toàn không?

  5. Tôi nên giữ thông tin đăng nhập của cơ sở dữ liệu của mình ở đâu?