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

MySql:Sắp xếp theo và Nhóm Bằng cách kết hợp không đưa ra bản ghi mới nhất

Làm cách nào để bạn có thể GROUP BY id_thread khi không có id_thread trong bảng của bạn?

SELECT * 
FROM contacts 
WHERE id_receiver = 1 
                                 --- GROUP BY id_thread
                                 --- removed 
ORDER BY created DESC
LIMIT 1                          --- only show one row

Dựa trên nhận xét của bạn, những gì bạn muốn là mới nhất (sắp xếp theo created ) hàng cho mọi id_thread , là một truy vấn khác và phức tạp hơn. Thậm chí còn có một thẻ cho loại truy vấn này, có tên là [greatest-n-per-group] .

SELECT c.* 
FROM contacts AS c
  JOIN
    ( SELECT id_thread, MAX(created) AS created 
      FROM contacts 
      WHERE id_receiver = 1  
      GROUP BY id_thread
    ) AS g 
    ON (g.id_thread, g.created) = (c.id_thread, c.created) 
WHERE c.id_receiver = 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. Làm thế nào để điền vào các lỗ hổng trong các trường tự động tăng dần?

  2. Ví dụ đơn giản về quan hệ nhiều-nhiều bằng cách sử dụng Sequelize

  3. Truy vấn chọn đơn giản của MySQL chậm

  4. Tăng tốc độ đếm hàng trong MySQL

  5. Làm cách nào để truy cập công cụ dòng lệnh mysql khi sử dụng XAMPP trong OS X?