Heim >Backend-Entwicklung >PHP-Tutorial >Verwenden Sie in derselben Tabelle SQL, um den Unterschied zwischen heute und gestern abzufragen, und sortieren Sie ihn dann.

Verwenden Sie in derselben Tabelle SQL, um den Unterschied zwischen heute und gestern abzufragen, und sortieren Sie ihn dann.

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-09-01 00:20:191899Durchsuche

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>

Antwortinhalt:

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
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn