„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie behebe ich „Fehler: Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten“ in UNION-Operationen?

Wie behebe ich „Fehler: Die verwendeten SELECT-Anweisungen haben eine unterschiedliche Anzahl von Spalten“ in UNION-Operationen?

Veröffentlicht am 10.11.2024
Durchsuche:654

How to Resolve \

Fehler: Diskrepanzen bei der Spaltenanzahl in SELECT-Anweisungen

Beim Ausführen einer Abfrage mit mehreren SELECT-Anweisungen, z. B. einer UNION-Operation, ist dies unbedingt erforderlich um sicherzustellen, dass jede Anweisung genau die gleiche Anzahl von Spalten enthält. Andernfalls wird der Fehler „Fehler: Die verwendeten SELECT-Anweisungen haben eine andere Anzahl von Spalten“ angezeigt.

Um dieses Problem zu beheben, muss die Abfrage so umgeschrieben werden, dass jede SELECT-Klausel eine identische Anzahl hat von Spalten mit kompatiblen Datentypen. Zum Beispiel die bereitgestellte Abfrage:

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 

leidet unter diesem Fehler, da das erste SELECT 4 Spalten enthält („“, u1., u2.*), während das zweite SELECT nur eine einzelne Spalte zurückgibt („fid2 ").

Eine einfachere Umschreibung, die die beabsichtigte Funktionalität beibehält, ist:

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 

Indem sichergestellt wird, dass beide SELECT-Anweisungen die gleiche Anzahl von Spalten mit übereinstimmenden Datentypen zurückgeben, kann die Abfrage ausgeführt werden, ohne dass der Spaltenanzahlfehler auftritt. Darüber hinaus werden unnötige äußere Verknüpfungen eliminiert, die auf der Grundlage des bereitgestellten Schemas überflüssig erscheinen.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3