Behebung des Fehlers „Unterabfrage gibt mehr als eine Zeile zurück“
Beim Umgang mit Unterabfragen ist es wichtig, deren Potenzial zur Rückgabe mehrerer Zeilen zu verstehen Reihen. Dies kann zu Fehlern führen, wenn es nicht angemessen behandelt wird, wie im Fall des Fehlers „Unterabfrage gibt mehr als 1 Zeile zurück“.
Unterabfragen, die mehrere Werte zurückgeben
Der Knackpunkt Der Grund für dieses Problem liegt darin, dass die betreffende Unterabfrage mehrere Zeilen zurückgibt. Wenn in der Hauptabfrage Bedingungen angegeben werden, die von aus der Unterabfrage erhaltenen Werten abhängen, tritt dieser Fehler auf.
Verwendung von IN für mehrere Werte
Um dieses Problem zu beheben, muss die Es sollte ein IN-Operator eingesetzt werden. Im Gegensatz zum Gleichheitsoperator (=), der einen einzelnen Wert erwartet, ermöglicht IN die Angabe mehrerer Werte. Die Syntax für die Verwendung von IN mit einer Unterabfrage lautet:
select * <br>from table<br>where id IN (subquery);<br>
In diesem Beispiel gibt die Unterabfrage mehrere Werte zurück und die ID-Spalte der Tabelle wird mit jedem dieser Werte abgeglichen Werte.
Beispiel:
Bedenken Sie zum Beispiel die folgenden Abfragen:
SELECT *<br>FROM Students<br> WHERE Marks = (SELECT MAX(Marks) FROM Students); -- Gibt nur 1 Wert zurück</p> <p>SELECT *<br>FROM Students<br>WHERE Marks IN</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> (SELECT Marks FROM Students ORDER BY Marks DESC LIMIT 10); -- Returns 10 values
In der ersten Abfrage Die Unterabfrage gibt die maximale Markierung zurück, bei der es sich um einen einzelnen Wert handelt. Daher kann der Gleichheitsoperator (=) verwendet werden. Bei der zweiten Abfrage gibt die Unterabfrage jedoch die obersten 10 Markierungen zurück, bei denen es sich um mehrere Werte handelt. Daher ist der IN-Operator erforderlich.
Durch die Verwendung von IN können Sie Unterabfragen, die mehrere Zeilen zurückgeben, effektiv verarbeiten und so sicherstellen, dass die Kriterien in der Hauptabfrage ordnungsgemäß erfüllt werden, indem Sie das Problem „Unterabfrage gibt mehr als eine Zeile zurück“ auflösen. Fehler effektiv.
Das obige ist der detaillierte Inhalt vonWie gehe ich mit Unterabfragen um, die mehr als eine Zeile zurückgeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!