sql >> Databáze >  >> RDS >> Mysql

návrh tabulky + SQL otázka

Nechápu, proč byste měli potřebovat syntetický klíč, takže místo něj použiji tuto tabulku:

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'
;

aritmetická syntaxe data je pravděpodobně chybná, ale chápete to

viz výše, přidejte ORDER BY curr.weight - prev.weight DESC a LIMIT N

k posledním dvěma otázkám:nespekulujte, prozkoumejte prováděcí plány. (postgresql má EXPLAIN ANALYZE , nevím o mysql), pravděpodobně zjistíte, že potřebujete indexovat sloupce, které se účastní WHERE a JOIN , nikoli ty, které tvoří sadu výsledků.



  1. pymssql.OperationalError:Chybová zpráva DB-Lib 20009, závažnost 9

  2. Nejlepší způsob, jak pravidelně spouštět dotazy Oracle

  3. Převeďte MySQL do XML pomocí PHP

  4. Zálohujte MySQL Amazon RDS