Frage

Ich werde durch ein paar Abfragen ich beibehalten werde, und ein Programmierer in den Abfragen gestellt hatte „1 = 1“ zu mir, dass immer wahr zu bewerten scheint.

Gibt es Vorteile für das?

Duplizieren: Warum sollte jemand WHERE 1 = 1 und in einer SQL-Klausel?

Diese Frage ist keine Antwort auf diese Frage.

Where-Klausel:

select * from table where 1=1 and sStatus not in ('status1','status2','status3')

Keine Programmierung oder wenn Aussagen ein und dort zu schieben. Eine gerade Abfrage.

Wenn Sie diese un-schließen könnte, würde Ich mag wissen, ob es einen Zweck ist, so dass ich neu schreiben kann und entfernen Sie die 1 = 1, wenn es nicht notwendig ist.

War es hilfreich?

Lösung

War es dynamische Abfragen? Manchmal hilfreich das ist, wenn dynamische Abfragen Aufbau auf Basis von Parametern, die optional sind.

Andere Tipps

Wenn Sie dynamisch eine where-Klausel erstellen, können Sie ein bisschen faul sein und davon ausgehen, dass jede Klausel Sie mit „AND“ vorangestellt wird, hinzufügen kann, beispielsweise

$str="select foo from bar where 1=1";

if ($filter1)
{
    $str.=" and col1='frobozz'";
}

Wenn Sie automatisch auf Ihre Anfrage hinzuzufügen Einschränkungen wollen, es macht Ihr Leben leichter:

string sql = "SELECT * FROM table WHERE 1=1";

if (someflag) {
  sql += " AND valid = 1";
}

if (someotherflag) {
  sql += " AND special = 1";
}

execute(sql);

Ohne WHERE 1 = 1 Sie in jedem Fall müsste prüfen, ob es die erste Einschränkung ist fügen Sie (und dann verwenden WHERE ...) oder wenn Sie bereits eine andere Einschränkung hinzugefügt vor (und fügen Sie dann AND ...).

Ich benutze dies für dynamische where-Klauseln, wenn ich etwas faul Programmierung machte und will nicht immer prüfen, ob die Klausel leer ist, um zu bestimmen, ob ich jetzt ein „AND“ zwischen meinen dynamischen Klauseln muß.

Das ist wirklich nur sinnvoll in dynamischen Abfragen. Wenn Sie Hinzufügen von Parametern in einer Schleife anstatt zu prüfen, ob es eine WHERE ist schon können Sie einfach anhängen und die Spalte = Wert jedes Mal.

ich zwei Gründe dafür gesehen habe, wenn man immer ein wahres Ergebnis will, oder wenn es geht um eine beliebige Anzahl von „und Bedingung = Wert“ auf die Mitteilung angehängt sein

Das ist sehr interessant ... Die WHERE-Klausel nichts enthält aber 1 = 1? Ich habe dies in dem die WHERE-Klausel häufig in SQL-Injection-Versuchen gesehen auf xyz="something" OR 1=1; als Mittel zurückkehrt, um immer eine Liste der Ergebnisse.

Können Sie uns mehr über das, was mit dieser Abfrage wird auf so könnten wir die Frage besser beantworten können?

  • Nicholas
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top