2016-06-16 9 views
2

Ich arbeite an meinem alten Projekt und ich fand auf ihrem Code WHERE TRUE AND ID='1' AND STAT='1'. Ich habe versucht, TRUE AND entfernt, so dass die Abfrage WHERE ID='1' AND STAT='1' werden und das gleiche Ergebnis erhalten.Was ist die Verwendung von "WHERE TRUE" in MySQL

Ich weiß, wir TRUE als boolean suchen können ‚wo etwas wahr ist‘, wie WHERE FLAG = TRUE und this MySQL documentation state that

Die Konstanten TRUE und FALSE auswerten zu 1 bzw. 0. Die Konstantennamen können in jedem beliebigen Großbuchstaben geschrieben werden.

Ich habe auch versucht SELECT * FROM MYTABLE WHERE TRUE aber es ist genau das gleiche wie SELECT * FROM MYTABLE

was ist der Zweck der TRUE in ihrer Abfrage?

Antwort

2

Es hat keinen spezifischen funktionalen Zweck. Ihr Kollege hat es möglicherweise eingefügt, wenn sie sich an einen bestimmten Styleguide hielten, der empfiehlt, dass alle SELECT-Abfragen explizite WHERE-Klauseln enthalten. Wenn keine explizite WHERE-Klausel angegeben ist, werden standardmäßig alle Zeilen ausgewählt. Das Hinzufügen einer WHERE-Klausel, die immer wahr ist, hat den gleichen Effekt.

Eine andere Möglichkeit, wie diese Abfrage zustande gekommen sein könnte, wäre, wenn sie von einem Codegenerierungstool generiert würde, das aufgrund der Schreibweise immer in eine WHERE-Klausel schreiben musste.

zum Beispiel:

myQuery = "SELECT X FROM Y WHERE " + ConditionMet(data)?" AccountID = '" + AcctId + "'" : "1=1"; 

Dies bedeutet, dass wenn ConditionMet (Daten) wahr ist, dann werden nur die Zeilen zurück, wo AccountID entspricht dem AcctId Sie beiläufig sind, wenn es falsch ist, dann werden alle Zeilen zurück..

Durch Hinzufügen eines "Dummy" 1 = 1 wird der Codegenerator einfacher zu schreiben.

Auf ähnliche Weise führt das Hinzufügen einer WHERE-Klausel, die immer falsch ist (z. B. "WHERE 1 = 0") dazu, dass null Zeilen zurückgegeben werden.

Verwandte Themen