Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie in derselben Tabelle SQL, um den Unterschied zwischen heute und gestern abzufragen, und sortieren Sie ihn dann.
Wie schreibt man schneller?
Ich verwende jetzt Left Join für die Tabelle selbst, aber das Ergebnis scheint falsch zu sein
AUSWÄHLEN
<code> table.id ,SUM(table.s-yestoday.a) as sum FROM table LEFT JOIN table yestoday ON yestoday.uid = wy_appdata.uid WHERE table.year = '.$year.' AND table.month = '.$month.' AND table.day = '.$day.' AND yestoday.year = '.$bre_data['year'] .' AND yestoday.month ='.$bre_data['month'] .' AND yestoday.day = '.$bre_data['day'] .' GROUP BY table.uid ORDER BY sum DESC</code>
Wie schreibt man schneller?
Ich verwende jetzt Left Join für die Tabelle selbst, aber das Ergebnis scheint falsch zu sein
AUSWÄHLEN
<code> table.id ,SUM(table.s-yestoday.a) as sum FROM table LEFT JOIN table yestoday ON yestoday.uid = wy_appdata.uid WHERE table.year = '.$year.' AND table.month = '.$month.' AND table.day = '.$day.' AND yestoday.year = '.$bre_data['year'] .' AND yestoday.month ='.$bre_data['month'] .' AND yestoday.day = '.$bre_data['day'] .' GROUP BY table.uid ORDER BY sum DESC</code>
Angenommen, es gibt die folgende Datentabelletbl
uid | s | date |
---|---|---|
1 | 5 | 2016-08-31 |
2 | 3 | 2016-08-31 |
3 | 7 | 2016-08-31 |
1 | 2 | 2016-08-30 |
2 | 5 | 2016-08-30 |
4 | 4 | 2016-08-30 |
Ausführen
<code class="sql">SELECT today.uid, today.s - IFNULL(yesterday.s, 0) AS diff FROM (SELECT uid, SUM(s) AS s FROM tbl WHERE date='2016-08-31' GROUP BY uid) AS today LEFT OUTER JOIN (SELECT uid, SUM(s) AS s FROM tbl WHERE date='2016-08-30' GROUP BY uid) AS yesterday USING (uid) ORDER BY diff DESC;</code>
Ergebnisse
uid | diff |
---|---|
3 | 7 |
1 | 3 |
2 | -2 |