sql >> Database teknologi >  >> RDS >> Mysql

vælg forrige dato, mysql

Da du kun har brug for én kolonne fra den "forrige" række, kan du prøve noget som dette:

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

Hvis du har brug for at trække flere "tidligere" attributter, er her en mere sofistikeret tilgang:

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

Den anden tilgang bruger en trekantet selv-sammenføjning såvel som en anti-sammenføjning til sig selv. Dybest set kunne det oversættes sådan her:



  1. Hvordan ville jeg implementere en simpel webstedssøgning med php og mySQL?

  2. Opdel kommaseparerede værdier i kolonne MYSQL

  3. Send adgangskode til mysql_config_editor ved hjælp af variabel i shell

  4. nogen måde at lave parametriserede forespørgsler og indkapsle det python i funktion