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

Số hàng không phân biệt

Tôi hơi bối rối, bởi vì logic của bạn dường như mang lại sớm nhất tin nhắn không phải là tin mới nhất.

Mặc dù distinct on khá mạnh mẽ, tôi không chắc liệu bạn có thể dễ dàng đạt được những gì mình muốn hay không. Xu hướng của tôi là chuyển sang sử dụng các chức năng cửa sổ:

SELECT m.*
FROM (SELECT m.*,
             (CASE WHEN sender_id < recipient_id
                   THEN (sender_id, recipient_id)
                   ELSE (recipient_id, sender_id)
              END) AS pair,
             ROW_NUMBER() OVER (PARTITION BY (CASE WHEN sender_id < recipient_id
                                                   THEN (sender_id, recipient_id)
                                                   ELSE (recipient_id, sender_id)
                                              END)
                                ORDER BY created_at, unread_count DESC
                               ) as seqnum,
             SUM(CASE WHEN m.opened = false THEN 0 ELSE 1 END) OVER
                 (PARTITION BY (CASE WHEN sender_id < recipient_id
                                     THEN (sender_id, recipient_id)
                                     ELSE (recipient_id, sender_id)
                                END)
                 ) as NumUnopened
      FROM "messages" m
      WHERE ((recipient_id = 6 and recipient_delete = false) or 
             (sender_id = 6 and sender_delete = false))  
     ) t
WHERE seqnum = 1;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jdbc4.MySQLSyntaxErrorException:Bảng không tồn tại trong cơ sở dữ liệu

  2. Làm cách nào để biết giao dịch nào đang gây ra trạng thái khóa siêu dữ liệu bảng Đang chờ?

  3. mysql_fetch_assoc ():đối số được cung cấp không phải là tài nguyên kết quả MySQL hợp lệ

  4. SELECT / GROUP BY - chuỗi giá trị

  5. PDOException trong Connector.php dòng 47:SQLSTATE [HY000] [1045] Quyền truy cập bị từ chối đối với người dùng 'hassan' @ 'localhost' (sử dụng mật khẩu:CÓ)