2017-08-21 2 views
0

Mein Problem bezieht sich auf diese bereits Question gelöst, aber ich kann es einfach nicht funktionieren.MySQL: UND + Parameter auswählen und überspringen Problem

Also ich habe diese Abfrage, die zuerst für die Spalte 'type' und dann für den kleinsten Zeitstempel in der Spalte 'lastChange' filtern sollte. Die Zeitstempel werden häufig aktualisiert.

Es scheint, die Werte zu filtern, denn wenn ich eine Zeile erreiche, die Typ = 'Privat' enthält, wäre das Ergebnis leer.

type != 'Public' // doesn't work either, because I have more than two values 

Aber sollte nicht die Abfrage überspringen tatsächlich alle Zeilen, die = ‚Public‘ nicht die Art besitzen und erst zurückkehren nur die jene diejenigen mit einem positiven Ergebnis - wie kann ich das richtig erreichen?

+2

Wenn Sie nur versuchen, die neueste zu finden, sollte 'WHERE \' type \ '= 'Public' ORDER BY lastChange desc LIMIT 1' funktionieren. Beachten Sie die Backticks um 'type', da es ein spezielles Wort in MySQL ist. – aynber

+0

Ich kann den obigen Kommentar nicht genug auffrischen. Es ist der Weg, um dieses Problem zu lösen, * und * es enthält einen Profi-Tipp über einen wahrscheinlichen Fehler, den Sie in Ihrer Abfrage haben. –

+2

@aynber gibt es keine Notwendigkeit zu "TYPE" ankreuzen, da es nur ein Schlüsselwort ist https://dev.mysql.com/doc/refman/5.7/en/keywords.html und nicht reserviert. Es gibt kein '(R)' daneben. –

Antwort

1

Ihre SELECT auf der rechten Seite zu lastChange gibt ein Minimum valie für alle Datensätze zurück, aber Sie benötigen MIN-Wert nur für den öffentlichen Typ, müssen Sie dies in der Abfrage angeben.

+1

Tun oder nicht, es gibt kein "Versuch". Eine *** gute Antwort *** wird immer eine Erklärung haben, was getan wurde und warum es so gemacht wurde, nicht nur für das OP, sondern auch für zukünftige Besucher von SO. –