Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann der Fehler „Unterschiedliche Spaltenanzahl in Select-Anweisungen' bei Verwendung von UNION behoben werden?

Linda Hamilton
Freigeben: 2024-10-30 19:52:30
Original
357 Leute haben es durchsucht

How to Resolve the

Fehler: Unterschiedliche Spaltenanzahlen in Select-Anweisungen

Beim Ausführen einer Abfrage, die den UNION-Operator verwendet, muss unbedingt sichergestellt werden, dass alle einzelnen beteiligten SELECT-Anweisungen eingehalten werden zwei grundlegende Kriterien:

  1. Übereinstimmende Spaltenanzahl: Jede SELECT-Anweisung muss die gleiche Anzahl von Spalten in der abgerufenen Ergebnismenge ergeben.
  2. Konsistente Daten Typen:Die Datentypen entsprechender Spalten in verschiedenen SELECT-Anweisungen sollten übereinstimmen.

Problemanalyse

Unter Berücksichtigung der bereitgestellten Abfrage:

<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 Die Fehlermeldung weist auf eine Diskrepanz in der Spaltenanzahl zwischen den beiden durch UNION verbundenen SELECT-Anweisungen hin. Konkret gibt die erste SELECT-Anweisung alle Spalten aus den beteiligten Tabellen zurück, während die zweite nur die fid2-Spalte abruft.

Lösung

Um dieses Problem zu beheben, sollte die zweite SELECT-Anweisung in geändert werden Entspricht der Spaltenanzahl der ersten Anweisung. Der einfachste Ansatz besteht darin, alle gewünschten Spalten explizit einzuschließen:

<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

Alternativ könnte man den UNION ALL-Operator verwenden, der SELECT-Anweisungen mit unterschiedlicher Spaltenanzahl zulässt. Allerdings werden die nicht übereinstimmenden Spalten mit NULL-Werten gefüllt, was möglicherweise nicht in allen Fällen wünschenswert ist.

Das obige ist der detaillierte Inhalt vonWie kann der Fehler „Unterschiedliche Spaltenanzahl in Select-Anweisungen' bei Verwendung von UNION 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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!