Heim >Datenbank >MySQL-Tutorial >Wie gehe ich mit Unterabfragen um, die mehr als eine Zeile zurückgeben?

Wie gehe ich mit Unterabfragen um, die mehr als eine Zeile zurückgeben?

Linda Hamilton
Linda HamiltonOriginal
2024-12-20 08:19:10261Durchsuche

How to Handle Subqueries Returning More Than One Row?

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>
<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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn