Auftreten des Fehlers „Unterabfrage gibt mehr als 1 Zeile zurück“. „Fehler beim Versuch, Kriterien basierend auf den Ergebnissen einer Unterabfrage festzulegen, kann frustrierend sein. Dieser Fehler tritt auf, wenn Ihre Unterabfrage mehrere Zeilen zurückgibt, Ihre Hauptabfrage jedoch nur eine erwartet.
Um dieses Problem zu beheben, ist es wichtig, den Unterschied zwischen dem Gleichheitsoperator (=) und dem IN-Operator zu verstehen. Der Gleichheitsoperator kann nur zwei Werte vergleichen und erwartet, dass die Unterabfrage einen einzelnen Wert zurückgibt. Andererseits können Sie mit dem IN-Operator einen Wert mit mehreren Werten oder einem Satz von Werten vergleichen, die von einer Unterabfrage zurückgegeben werden.
Wenn Ihre Unterabfrage mehrere Zeilen zurückgibt, Sie sollten den IN-Operator verwenden, um den Wert Ihrer Hauptabfrage mit diesen mehreren Werten zu vergleichen. Die Syntax lautet wie folgt:
SELECT * FROM table WHERE id IN (subquery)
In diesem Beispiel gibt die Unterabfrage mehrere Zeilen zurück und die Hauptabfrage prüft, ob die ID-Spalte mit einem dieser Zeilenwerte übereinstimmt.
Stellen Sie sich das folgende Szenario vor:
Um diesen Fehler zu beheben, ändern Sie Abfrage 2 so, dass IN verwendet wird Operator:
SELECT * FROM table2 WHERE id IN (SELECT id FROM table1)
Jetzt ruft Abfrage 2 die Datensätze korrekt aus Tabelle2 ab, wobei die ID-Spalte mit einem der von der Unterabfrage zurückgegebenen Werte übereinstimmt.
Verständnis Die Unterscheidung zwischen dem Gleichheitsoperator und dem IN-Operator ist bei der Arbeit mit Unterabfragen von wesentlicher Bedeutung. Durch die Verwendung des IN-Operators können Sie den Fehler „Unterabfrage gibt mehr als eine Zeile zurück“ umgehen und Kriterien basierend auf mehreren aus einer Unterabfrage erhaltenen Werten effektiv festlegen.
Das obige ist der detaillierte Inhalt vonWie kann ich den Fehler „Unterabfrage gibt mehr als 1 Zeile zurück' in SQL beheben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!