Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann „FEHLER 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in UNION-Anweisungen behoben werden?

Susan Sarandon
Freigeben: 2024-11-03 21:47:30
Original
371 Leute haben es durchsucht

How to Fix

Fehler: Ungleichheit in der Spaltenanzahl zwischen UNIONed SELECT-Anweisungen

In der bereitgestellten Abfrage stoßen Sie auf den Fehler: „FEHLER 1222 (21000)“ : Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten.“ Dieser Fehler tritt auf, wenn die SELECT-Anweisungen in einer UNION-Anweisung ungleiche Spaltenanzahlen zurückgeben.

In Ihrer Abfrage gibt die erste SELECT-Anweisung:

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

drei Spalten zurück: friends.fid1 , friends.fid2 und Spalten aus den Tabellen der verbundenen Benutzer (u1 und u2). Allerdings gibt die zweite SELECT-Anweisung:

SELECT fid2 FROM friends
WHERE (friends.fid2 = 1) AND (friends.fid1 < 1)
Nach dem Login kopieren

nur eine einzige Spalte zurück: friends.fid2.

UNION-Anforderungen für die Spaltenübereinstimmung

Damit eine UNION-Operation erfolgreich ist, müssen alle kombinierten SELECT-Anweisungen die folgenden Anforderungen erfüllen:

  • Übereinstimmende Spaltenanzahl: Jede SELECT-Anweisung muss Folgendes zurückgeben gleiche Anzahl von Spalten.
  • Übereinstimmende Spaltendatentypen: Die Datentypen der Spalten an jeder Position in der SELECT-Klausel müssen übereinstimmen.

Lösung

Um diesen Fehler zu beheben, müssen Sie sicherstellen, dass alle SELECT-Anweisungen in Ihrer UNION-Operation die gleiche Anzahl von Spalten mit übereinstimmenden Datentypen zurückgeben. Sie können Ihre Abfrage beispielsweise wie folgt umschreiben:

SELECT friends.*, u.*
FROM friends
JOIN users AS u ON u.uid = friends.fid2
WHERE friends.fid1 = 1 AND friends.fid2 > 1
UNION
SELECT friends.*, u.*
FROM friends
JOIN users AS u ON u.uid = friends.fid1
WHERE friends.fid2 = 1 AND friends.fid1 < 1
ORDER BY RAND()
LIMIT 6;
Nach dem Login kopieren

In dieser überarbeiteten Abfrage geben beide SELECT-Anweisungen die gleiche Anzahl von Spalten (fünf) mit übereinstimmenden Datentypen zurück, wodurch der Fehler behoben wird.

Das obige ist der detaillierte Inhalt vonWie kann „FEHLER 1222 (21000): Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten' in UNION-Anweisungen behoben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
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