Ich speichere einige Informationen in einer MySQL-Tabelle einschließlich eines Datums ohne Zeit. Das Datumsformat ist eine Zeichenfolge, die wie folgt aussieht: "25.08.2016" (Day.Month.Year).MySQL mehrere SELECT-Anweisungen in einer Abfrage
Ich möchte die obersten 50 Datensätze aus einer Tabelle absteigend nach einer Spalte auswählen, aber ich möchte nur die Zeilen mit einem bestimmten Spalteneintrag (Datum) anzeigen.
Es ist ein Ranking-System und ich möchte inaktive Personen zu aktualisieren.
Ich würde diese drei Anfragen kombinieren müssen:
SELECT * FROM `rank` ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;
SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y'));
UPDATE `rank` SET `inactive` = '1';
- die Top 50 Personen auswählen.
- Auswählen der inaktiven Personen der ersten Abfrage.
- Aktualisierung der Personen auf inaktiv.
Die Score
ist Rang 1 und das ist, warum ich DESC brauchen, möchte ich nur unter die Top-50 Personen als inaktiv nichts markieren, unter 50 diese Menschen nicht relevant sind, deshalb habe ich keine Aussage wie diese verwenden können :
SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y')) ORDER BY `rank`.`Score` DESC LIMIT 0 , 50
Ja, es wäre 50 Zeilen auswählen, aber nicht die Top 50.
BTW es in pHP ich tue. Und ich konnte das Problem lösen, indem sie holen:
SELECT * FROM `rank` ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;
Dann auf ein Array die accound IDs speichern, dann Abfrage:
SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y')) ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;
und vergleichen Sie die accound IDs zu dem anderen Ergebnis, wenn keine Übereinstimmung Ich habe nur die Schleife gebrochen.
Kann ich es nicht einfach mit reinem MySQL machen? Kann ich eine Sache nicht abfragen und dann die Ergebnisse filtern?
Bitte helfen Sie mir, noch Fragen?
ein Datumsfeld verwenden das Leben viel einfacher machen –
wird ich ein Datumsfeld verwenden würde, wenn ich in der Lage sein würde, mein bereits bestehendes Format „2016.08.25“ auf das Datumsfeld, was zu konvertieren, kann ich nicht einfach 70.000 Zeilen abschneiden .. meine Daten sind bis zu 3 Jahre alt.Wie auch immer, das ist nicht der Punkt, ich muss 50 Zeilen auswählen und dann eine einzelne Spalte vergleichen und dann die linke aktualisieren. Beispiel: Ich kaufe 50 Äpfel und 10 davon sind matschig, aber 5 davon können noch verwendet werden. – Menju