sql >> Database >  >> RDS >> Mysql

tafelontwerp + SQL-vraag

Ik zie niet in waarom je de synthetische sleutel nodig zou hebben, dus ik gebruik in plaats daarvan deze tabel:

CREATE TABLE foodbar (
  user_id     INT NOT NULL
, created_at  date not null
, weight      double not null
, PRIMARY KEY (user_id, created_at)
);
SELECT curr.user_id, curr.weight - prev.weight
FROM foodbar curr, foodbar prev
WHERE curr.user_id = prev.user_id
  AND curr.created_at = CURRENT_DATE
  AND prev.created_at = CURRENT_DATE - INTERVAL '7 days'
;

de datumberekeningssyntaxis is waarschijnlijk verkeerd, maar je snapt het idee

zie hierboven, voeg ORDER BY curr.weight - prev.weight DESC . toe en LIMIT N

voor de laatste twee vragen:niet speculeren, uitvoeringsplannen onderzoeken. (postgresql heeft EXPLAIN ANALYZE , weet niet over mysql) zult u waarschijnlijk merken dat u kolommen moet indexeren die deelnemen aan WHERE en JOIN , niet degenen die de resultatenset vormen.



  1. Waarden invoegen van een tabel naar een tabel

  2. MySQL debugging tool trage queries?

  3. Kunnen opgeslagen procedures een resultatenset retourneren?

  4. tijdstempel naar datum converteren in java