sql >> Databasteknik >  >> RDS >> PostgreSQL

Returnera var n:e rad från databasen med ActiveRecord i rails

Jag tror att du letar efter en fråga som den här:

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

Detta är svårt att bygga med ActiveRecord, så du kan bli tvungen att göra något som:

@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
  }
)

Du kommer uppenbarligen att vilja ändra beställningen som används och lägga till eventuella WHERE-klausuler eller andra modifieringar för att passa dina behov.



  1. Hur väljer man endast datum från ett DATETIME-fält i MySQL?

  2. Hitta en genomsnittlig SQL

  3. Installera lagrad procedur på flera databaser

  4. TCL-kommandon i SQL