Während der Datenbankentwicklung kommt es häufig zu MySQL-Fehlern. Ein solcher Fehler, „‚#1241 – Operand sollte 1 Spalte(n) enthalten‘“, tritt häufig auf, wenn Unterabfragen verwendet werden, die mehrere Spalten zurückgeben. Dies tritt normalerweise auf, wenn eine Unterabfrage mehr als eine Spalte für eine äußere Abfrage bereitstellt und ein einzelnes Spaltenergebnis erwartet.
Die Fehlermeldung weist auf eine Inkompatibilität zwischen der Anzahl der von einer Unterabfrage zurückgegebenen Spalten und der Erwartung der Hauptabfrage hin. Die äußere SELECT
-Anweisung versucht, das Ergebnis der mehrspaltigen Unterabfrage so zu verwenden, als wäre es ein einzelner Wert.
Dieser Fehler kann durch Anpassen Ihrer Abfragestruktur behoben werden. Hier sind zwei effektive Ansätze:
<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, u.username AS posted_by, u.id AS posted_by_id FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id LEFT OUTER JOIN users u ON u.id = p.posted_by WHERE t.cat_id = :cat GROUP BY t.id;</code>
MAX()
, MIN()
, AVG()
) oder die Auswahl einer bestimmten Spalte aus der users
-Tabelle.<code class="language-sql">SELECT t.id, t.name, t.post_count, t.view_count, COUNT(p.solved_post) AS solved_post, (SELECT u.username FROM users u WHERE u.id = p.posted_by) AS posted_by_username FROM topics t LEFT OUTER JOIN posts p ON p.topic_id = t.id GROUP BY t.id;</code>
Durch die Implementierung einer dieser Lösungen korrigieren Sie den Operandenfehler und rufen die erforderlichen Daten genau aus Ihrer MySQL-Datenbank ab. Die Wahl der besten Lösung hängt von Ihren spezifischen Datenanforderungen und Ihrem Abfragedesign ab.
Das obige ist der detaillierte Inhalt vonWie behebe ich den MySQL-Fehler „Operand sollte 1 Spalte(n) enthalten' in Unterabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!