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

Trả lại mọi hàng thứ n từ cơ sở dữ liệu bằng ActiveRecord trong đường ray

Tôi nghĩ bạn đang tìm một truy vấn như sau:

SELECT * FROM (SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id) stats WHERE mod(rownum,3) = 0

Điều này khó xây dựng bằng ActiveRecord, vì vậy bạn có thể bị buộc phải làm một số việc như:

@widgetstats = self.widgetstats.find_by_sql(
  %{
    SELECT * FROM
    (
      SELECT widgetstats.*, row_number() OVER () AS rownum FROM widgetstats ORDER BY id
    ) AS stats
    WHERE mod(rownum,3) = 0
  }
)

Rõ ràng là bạn sẽ muốn thay đổi thứ tự đã sử dụng và thêm bất kỳ điều khoản WHERE nào hoặc các sửa đổi khác để phù hợp với nhu cầu của mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ý nghĩa của lỗi postgres này là gì:ROWS không áp dụng được khi hàm không trả về một tập hợp

  2. Làm cách nào để đặt tên thuộc tính chính xác thành kết quả tổng hợp json với mệnh đề GROUP BY?

  3. Tìm chuỗi điểm số hoàn hảo dài nhất trên mỗi người chơi

  4. Làm thế nào để lấy bản ghi Đầu tiên và Cuối cùng từ một truy vấn sql?

  5. Cách làm cho Postgres Copy bỏ qua dòng đầu tiên của tệp txt lớn