sql >> Databasteknik >  >> RDS >> Mysql

välj föregående datum, mysql

Eftersom du bara behöver en kolumn från den "föregående" raden kan du prova något i stil med detta:

SELECT
  dte,
  id,
  value,
  (
    SELECT value
    FROM atable
    WHERE id = t.id
      AND dte < t.dte
    ORDER BY dte DESC
    LIMIT 1
  ) AS previous_value
FROM atable t

Om du behöver dra fler "tidigare" attribut, här är ett mer sofistikerat tillvägagångssätt:

SELECT
  t1.dte,
  t1.id,
  t1.value,
  t2.dte,
  t2.value,
  …
FROM atable t1
  LEFT JOIN atable t2 ON t1.id = t2.id AND t1.dte > t2.dte
  LEFT JOIN atable t3 ON t1.id = t3.id AND t1.dte > t3.dte AND t3.dte > t2.dte
WHERE t3.id IS NULL

Det andra tillvägagångssättet använder en triangulär självkoppling såväl som en anti-join till jaget. I grund och botten skulle det kunna översättas så här:



  1. Ska jag ta bort standard-id-fältet när jag använder en sträng primärnyckel i Rails / Postgres?

  2. Hur man lägger till ett sidhuvud och en sidfot i ett formulär i Microsoft Access

  3. Gruppera flera mysql-resultat med ett kolumnvärde

  4. php sparar inte data till mysql