MySQL-Fehler: „Vorgang sollte 1 Spalte enthalten“ Lösung
In einer aktuellen SQL-Abfrage ist ein Entwickler auf einen verwirrenden Fehler gestoßen: „Der Operand sollte 1 Spalte enthalten.“ Der Fehler stoppte ihren Fortschritt, aber nach sorgfältiger Untersuchung wurde eine Lösung gefunden.
Die betreffende Abfrage versucht, Daten aus zwei Tabellen, „Themen“ und „Beiträge“, abzurufen, und enthält Statistiken für eine Unterabfrage, die zwei Spalten aus der Tabelle „Benutzer“ auswählt. Diese Unterabfrage versuchte jedoch, zwei Spalten in eine zu projizieren, was zu einer Fehlermeldung führte.
Verständnisfehler:
Der Fehler „Operand sollte 1 Spalte enthalten“ tritt auf, wenn eine Abfrage versucht, mit mehreren Spalten (z. B. Aggregat) zu arbeiten, als wären sie eine einzelne Spalte. In diesem speziellen Fall wählt die Unterabfrage sowohl „Benutzername“ als auch „ID“ aus der Tabelle „Benutzer“ aus.
Problem gelöst:
Um dieses Problem zu beheben, wurde die Unterabfrage neu konfiguriert, um nur eine Spalte auszuwählen, indem sie direkt mit der Tabelle „Benutzer“ verknüpft wird. Dieser Ansatz ermöglicht mehr Flexibilität bei der Auswahl der erforderlichen Spalten.
Umgeschriebene Abfrage:
<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>
Vorteile der Direktverbindung:
Der direkte Beitritt zur Tabelle „Benutzer“ bietet mehrere Vorteile:
Das obige ist der detaillierte Inhalt vonWarum gibt meine MySQL-Abfrage „Operand sollte 1 Spalte(n) enthalten' zurück?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!