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

Hệ thống nhắn tin riêng. Liệt kê tin nhắn cuối cùng của mỗi cuộc trò chuyện

Điều này giả định id là cột tăng tự động:

SELECT MAX(id) AS id
FROM pms
WHERE id_to = 1 OR id_from = 1
GROUP BY (IF(id_to = 1, id_from, id_to))

Giả sử bạn có id_fromid_to được lập chỉ mục, biến thể này rất có thể sẽ hoạt động tốt hơn vì MySQL không biết phải làm gì với OR:

SELECT MAX(id) AS id FROM
(SELECT id, id_from AS id_with
FROM pms
WHERE id_to = 1
UNION ALL
SELECT id, id_to AS id_with
FROM pms
WHERE id_from = 1) t
GROUP BY id_with

Đây là cách nhận thông báo cho các id đó:

SELECT * FROM pms WHERE id IN
    (SELECT MAX(id) AS id FROM
    (SELECT id, id_from AS id_with
    FROM pms
    WHERE id_to = 1
    UNION ALL
    SELECT id, id_to AS id_with
    FROM pms
    WHERE id_from = 1) t
    GROUP BY id_with)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sao lưu / xuất cơ sở dữ liệu MySQL bằng PHP

  2. Thứ tự hàng MySQL cho SELECT * FROM tên_bảng;?

  3. Cách giải quyết không có lỗi GROUP BY trong truy vấn mysql

  4. Làm cách nào để tìm bản ghi tiếp theo sau một bản ghi được chỉ định trong SQL?

  5. Tránh bế tắc MySQL khi nâng cấp được chia sẻ lên khóa độc quyền