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

SQL:Làm cách nào để giữ thứ tự các hàng với DISTINCT?

distinct từ khóa đang làm những gì nó phải làm, trả về mỗi hàng một giá trị cột nhất định. Khác biệt không cho phép bạn chỉ định cái nào hàng như vậy sẽ được trả về và rõ ràng từ truy vấn ban đầu rằng thứ tự như vậy được phép (có một hàng có id 443 tiếp theo một hàng có id 429).

Để kiểm soát những hàng nào sẽ được trả về, bạn cần phải định dạng lại truy vấn. Một giải pháp điển hình mà tôi sẽ thực hiện là sử dụng nhóm group by , chọn cột nhóm và hàng mong muốn từ mỗi nhóm, điều gì đó ảnh hưởng đến

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Nếu tôi cần phải làm nhiều hơn, tôi sẽ sử dụng loại truy vấn này như một lựa chọn con trong một truy vấn lớn hơn, có thể kết hợp trên trường id để nhận được nhiều trường hơn từ hàng ưu tiên, Hoặc sắp xếp truy vấn theo một cách cụ thể.




  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ác thủ tục được lưu trữ được thực thi thông qua jdbc

  2. LEFT THAM GIA đơn hàng và giới hạn

  3. Mysql DISTINCT không hoạt động nếu tôi thêm một cột khác

  4. Làm thế nào để tìm các kết quả tương tự và sắp xếp theo độ tương tự?

  5. Cách bật nhật ký truy vấn chậm trong AWS RDS MySQL