Heim > Datenbank > MySQL-Tutorial > Warum gibt meine MySQL-Abfrage den Fehler „Operand sollte 1 Spalte(n) enthalten' zurück?

Warum gibt meine MySQL-Abfrage den Fehler „Operand sollte 1 Spalte(n) enthalten' zurück?

Susan Sarandon
Freigeben: 2025-01-12 15:26:43
Original
498 Leute haben es durchsucht

Why Does My MySQL Query Return an

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage