sql >> Database teknologi >  >> RDS >> PostgreSQL

Returner hver n'te række fra databasen ved hjælp af ActiveRecord i rails

Jeg tror, ​​du leder efter en forespørgsel som denne:

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

Dette er svært at bygge ved hjælp af ActiveRecord, så du kan blive tvunget til at gøre noget 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 vil naturligvis gerne ændre den anvendte rækkefølge og tilføje eventuelle WHERE-klausuler eller andre ændringer, så de passer til dine behov.



  1. Find primærnøgle fra én tabel i kommasepareret liste

  2. T-SQL:Sletter alle duplikerede rækker, men beholder én

  3. MySQL - Kombinerer flere WHEN-betingelser i CASE

  4. Hvordan gemmer jeg en værdi fra en sql-forespørgsel i en variabel?