MySQL-Fehler: Problem „Operand sollte 1 Spalte enthalten“ behoben
In Ihrer MySQL-Abfrage ist der Fehler „Operand sollte 1 Spalte enthalten“ aufgetreten. Dieser Fehler tritt normalerweise auf, wenn eine Unterabfrage mehrere Spalten zurückgibt, die äußere Abfrage jedoch nur eine einzige Spalte an dieser Position erwartet.
Verständnisfehler:
Die fehlerhafte Abfrage enthält eine Unterabfrage:
<code class="language-sql">(SELECT users.username AS posted_by, users.id AS posted_by_id FROM users WHERE users.id = posts.posted_by)</code>
Diese Unterabfrage ruft zwei Spalten ab: „posted_by“ und „posted_by_id“. Sie verwenden diese Unterabfrage jedoch als einzelne Spalte in der äußeren Abfrage:
<code class="language-sql">COUNT( posts.solved_post ) AS solved_post, (SUBQUERY)</code>
Diese Inkonsistenz führt zum Fehler „Operand sollte 1 Spalte enthalten“, da die äußere Abfrage an dieser Stelle eine einzelne Spalte erwartet.
Lösung:
Methode 1: Tischverbindung verwenden
Um dieses Problem zu lösen, sollten Sie erwägen, die Tabelle „users“ direkt zu verknüpfen, anstatt eine Unterabfrage zu verwenden. Dadurch können Sie die Spalten „posted_by“ und „posted_by_id“ explizit auswählen, ohne die Einzelspaltenbeschränkung zu verletzen.
<code class="language-sql">SELECT topics.id, topics.name, topics.post_count, topics.view_count, COUNT( posts.solved_post ) AS solved_post, users.username AS posted_by, users.id AS posted_by_id FROM topics LEFT OUTER JOIN posts ON posts.topic_id = topics.id LEFT OUTER JOIN users ON users.id = posts.posted_by WHERE topics.cat_id = :cat GROUP BY topics.id</code>
Methode 2: Wählen Sie eine einzelne Spalte aus einer Unterabfrage aus
Alternativ können Sie, wenn Sie darauf bestehen, eine Unterabfrage zu verwenden, diese so ändern, dass nur die erforderlichen Spalten zurückgegeben werden. Beispielsweise können Sie nur die Spalte „posted_by“ abrufen:
<code class="language-sql">(SELECT users.username AS posted_by FROM users WHERE users.id = posts.posted_by)</code>
Durch die Auswahl einer einzelnen Spalte in einer Unterabfrage stellen Sie sicher, dass diese die Einzelspaltenanforderungen der äußeren Abfrage erfüllt.
Das obige ist der detaillierte Inhalt vonWarum gibt meine MySQL-Abfrage den Fehler „Operand sollte 1 Spalte(n) enthalten' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!