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

Số hàng cho kết quả truy vấn được nhóm theo cột

Điều này sẽ khá đơn giản.

SELECT (CASE WHEN @fk <> fk_id THEN @row:=1 ELSE @row:[email protected] + 1 END) AS ordinality, 
       @fk:=fk_id, rcv_date
FROM   (SELECT @row:=0) AS r, 
       (SELECT @fk:=0) AS f, 
       (SELECT fk_id, rcv_date FROM files ORDER BY fk_id, rcv_date) AS t

Tôi đã đặt hàng theo fk_id trước tiên để đảm bảo tất cả các khóa ngoại của bạn kết hợp với nhau (nếu chúng không thực sự nằm trong bảng thì sao?), sau đó tôi đã thực hiện thứ tự ưu tiên của bạn, tức là trước rcv_date . Truy vấn kiểm tra sự thay đổi trong fk_id và nếu có một thay đổi, thì biến số hàng được đặt thành 1 hoặc nếu không thì biến số sẽ được tăng lên. Của nó được xử lý trong tuyên bố trường hợp. Lưu ý rằng @fk:=fk_id được thực hiện sau khi kiểm tra trường hợp khác, nó sẽ ảnh hưởng đến số hàng.

Chỉnh sửa: Chỉ cần nhận thấy giải pháp của riêng bạn tình cờ giống như tôi đã kết thúc. Thanh danh! :)




  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 để sử dụng tham gia đầy đủ bên ngoài trong laravel 5.0?

  2. làm cho tất cả các số nguyên tăng tự động có cùng số chữ số với các số 0 ở đầu

  3. Không thể tạo mô hình dữ liệu thực thể - sử dụng MySql và EF6

  4. Có cách nào để thực hiện INSERT ... ON DUPLICATE KEY UPDATE trong Zend Framework 1.5 không?

  5. Chọn 10 hàng riêng biệt đầu tiên trong mysql