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

Chọn n hàng cho mỗi nhóm trong mysql

Bạn có nhiều giải pháp và một trong số đó là sử dụng left join và bạn có thể kiểm tra về nó

select t1.* from test t1
left join test t2
on t1.type = t2.type and t1.price > t2.price
group by t1.variety
having count(*) <=1
order by t1.type,t1.price

Logic là thực hiện phép nối bên trái với cùng một bảng trong đó loại giống nhau và giá thấp hơn bảng kia và cuối cùng thực hiện một nhóm group by Varity và sau đó sử dụng count () với việc phải hiển thị số lượng bản ghi bạn muốn cho mỗi nhóm. Lưu ý rằng trong mysql, bạn có quyền tự do nhóm theo mệnh đề như trong truy vấn trên theo cách tùy ý có thể không thành công trong RDBMS khác.

Bây giờ bạn có một số nhầm lẫn về alias , trong ví dụ trên, tên bảng là test và trong truy vấn, một tên giả được đặt là t1 . Ngoài ra, khi bạn tự tham gia, điều quan trọng là bạn phải đặt các tên bí danh duy nhất cho cùng một bảng. Trong ví dụ trên, cùng một bảng được kết hợp với chính nó, vì vậy chúng tôi cần đảm bảo rằng chúng tôi đặt một số bí danh cho các bảng.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Quyền truy cập bị từ chối đối với 'user' @ 'localhost'

  2. MySQL:Giao dịch trên nhiều chuỗi

  3. So sánh các giá trị nhị phân trong MySQL

  4. MySQL LIMIT với các tham số

  5. Làm thế nào tôi có thể làm tròn một số xuống 10 gần nhất?