Heim >Datenbank >MySQL-Tutorial >Wie behebt man „Fehler 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in MySQL UNION Operations?

Wie behebt man „Fehler 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in MySQL UNION Operations?

Barbara Streisand
Barbara StreisandOriginal
2024-10-29 01:41:30301Durchsuche

How to Fix

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!

Stellungnahme:
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