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
Freigeben: 2024-10-29 01:41:30
Original
320 Leute haben es durchsucht

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

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

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

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!

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