Heim >Datenbank >MySQL-Tutorial >Wie behebt man „Fehler 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in MySQL UNION Operations?
Fehler: Nicht übereinstimmende Spaltenanzahl in SELECT-Anweisungen
In MySQL erfordern UNION- und UNION ALL-Operationen, dass die teilnehmenden SELECT-Anweisungen eine identische Nummer besitzen von Spalten innerhalb ihrer SELECT-Klauseln. Darüber hinaus müssen die Datentypen der Spalten an jeder Position übereinstimmen.
Die bereitgestellte Abfrage verstößt gegen diese Regel:
<code class="sql">SELECT * FROM friends LEFT JOIN users AS u1 ON users.uid = friends.fid1 LEFT JOIN users AS u2 ON users.uid = friends.fid2 WHERE (friends.fid1 = 1) AND (friends.fid2 > 1) UNION SELECT fid2 FROM friends WHERE (friends.fid2 = 1) AND (friends.fid1 < 1) ORDER BY RAND() LIMIT 6;
Die erste SELECT-Anweisung gibt alle Spalten aus „Freunde“ und „ „users“-Tabellen, während die zweite SELECT-Anweisung nur die „fid2“-Spalte aus der „friends“-Tabelle zurückgibt. Diese Diskrepanz in der Spaltenanzahl führt zu der folgenden Fehlermeldung:
<code class="error">ERROR 1222 (21000): The used SELECT statements have a different number of columns from the following:
Um den Fehler zu beheben, stellen Sie sicher, dass alle SELECT-Anweisungen in der UNION-Operation die gleiche Anzahl von Spalten haben. Der einfachste Weg, dies zu erreichen, ist die Verwendung einer expliziten Spaltenliste in jeder SELECT-Anweisung:
<code class="sql">SELECT f.*, u.* FROM FRIENDS AS f JOIN USERS AS u ON u.uid = f.fid2 WHERE f.fid1 = 1 AND f.fid2 > 1 UNION SELECT f.*, u.* FROM FRIENDS AS f JOIN USERS AS u ON u.uid = f.fid1 WHERE f.fid2 = 1 AND f.fid1 < 1 ORDER BY RAND() LIMIT 6;</code>
Durch die explizite Angabe der Spalten in jeder SELECT-Anweisung kann MySQL sicherstellen, dass die Spaltenanzahl und die Datentypen übereinstimmen Die UNION-Operation läuft ohne Fehler ab.
Das obige ist der detaillierte Inhalt vonWie behebt man „Fehler 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in MySQL UNION Operations?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!